在每个子文件夹中批量创建一个文件夹并将所有 .jpg 文件移动到其中

Batch create a Folder in every subfolders and Move all the .jpg files in it

我创建了一个名为 Pictures 的文件夹并将所有 .jpg 文件放入其中的批处理文件。

@echo off
md Pictures
for %%i in ("*.jpg") do (
 move /Y "%%i" "Pictures" )
end

有没有办法让脚本也遍历子目录?我想 运行 根目录下的批处理文件并使其适用于所有子文件夹。

其实我刚刚想通了

@echo off
setlocal
for /f "usebackq tokens=*" %%a in (`dir /b /a:d`) do (
  rem enter the directory
  pushd %%a
  echo In Directory: %%a
  md Pictures
  for %%i in ("*.jpg") do (
  move /Y "%%i" "Pictures" )
  rem leave the directory
  popd
  )
endlocal

它做同样的事情,但它通过子文件夹工作。我花了一些时间才弄明白。无论如何,希望它也能帮助到其他人。

根据您提供的答案,我建议您可以这样做,在一行中 :

@For /D %%G In (*) Do @"%__AppDir__%Robocopy.exe" "%%G" "%%G\Pictures" *.jpg /Mov >NUL 2>&1

作为替代方案,因为 For /D 可能不会选取您的所有目录,(它忽略具有隐藏和系统属性的目录):

@For /F "EOL=? Delims=" %%G In ('Dir /B /AD') Do @"%__AppDir__%Robocopy.exe" "%%G" "%%G\Pictures" *.jpg /Mov >NUL 2>&1

试试这个:

for /f %%a in ('dir /b /ad "Filepath"') do (
  md "%%~fa\Pictures"
  for %%b in ("*.jpg") do robocopy "%%~fb" "%%~fa\Pictures\" /mov
)