我想使用批处理文件创建与要移动到的文件同名的子目录

我想使用批处理文件创建与要移动到的文件同名的子目录

对于给定的数字文件名,目录中存在多个文件。此目录有数百个这样的数字文件名。我想为每个数字文件名创建一个文件夹,并将文件移动到各自的文件夹中。我开始这样做:

  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\"
            )
        )
    )
)

相关内容