对于给定的数字文件名,目录中存在多个文件。此目录有数百个这样的数字文件名。我想为每个数字文件名创建一个文件夹,并将文件移动到各自的文件夹中。我开始这样做:
SET /P M= ENTER THE FOUR-DIGIT FILENAME
MKDIR "%M%"
MOVE "%M%.*" "%M%"
这很好用,但我必须输入每个文件名。有没有办法让用户只输入文件名的前两个数字,这样我就可以创建文件夹并移动文件,一次 100 个?
答案1
下一个脚本应该对你有用。通过rem
注释进行基本解释。更多信息在for
循环命令, 在子串, 在~
参数修饰符ETC。
@ECHO OFF >NUL
SET /P "M=ENTER THE TWO-DIGIT FILENAME "
rem ensure 2-digit
set "M=00%M%"
rem get last two characters
set "M=%M:~-2%"
for /L %%I in (0,1,9) do (
for /L %%J in (0,1,9) do (
rem here %M%%%I%%J = four-digit name
rem exists at least one file starting with that 4 digits?
if exist "%M%%%I%%J*.*" (
rem create directory; error message throw away by 2>NUL
MKDIR "%M%%%I%%J" 2>NUL
rem move all files starting with 4 digits
rem but exclude directories by /a:-d
for /F "tokens=*" %%G in ('dir /b /a:-d "%M%%%I%%J*.*"') do (
MOVE "%%~G" "%M%%%I%%J\"
)
)
)
)