避免先手动创建文件夹来移动其中的文件

避免先手动创建文件夹来移动其中的文件

我有一些文件,例如

the punisher return.cbr
the punisher new adventure.cbr
undiscovered country america.cbr
undiscovered country canada.cbr

我需要以这种方式移动文件

the punisher
     |
     +--- the punisher return.cbr
     +--- the punisher new adventure.cbr

undiscovered country
     |
     +--- undiscovered country america.cbr
     +--- undiscovered country canada.cbr

我测试了这个脚本

@echo off
setlocal EnableExtensions DisableDelayedExpansion
for /F "eol=| delims=" %%I in ('dir /AD /B /O-N 2^>nul') do if exist "%%I*.cbr" move /Y "%%I*.cbr" "%%I\"
endlocal

但它只有在我手动创建文件夹the punisher之前才有效undiscovered country运行脚本。我需要避免手动创建文件夹来移动文件

答案1

最佳解决方案(有很多):

您可以使用RoboCopy参数/MOV,它将为您创建目录。

例子:RoboCopy c:\FromHere\SomeDir c:\ToHereEvenThoughItDoesntExist\SomeOtherDir "%%I" /MOV

答案2

添加 mkdir 命令 脚本:

@echo off
setlocal EnableExtensions DisableDelayedExpansion
for /F "eol=| delims=" %%I in ('dir /AD /B /O-N 2^>nul') do (
  mkdir "%%I"
  if exist "%%I*.cbr" move /Y "%%I*.cbr" "%%I\"
)
endlocal

enableextensions选项将mkdir忽略现有文件夹而不会出现错误(请参阅设置本地)。

相关内容