如何在文件夹上循环移动文件夹(批处理)?

时间:2015-07-21 19:54:41

标签: windows batch-file command-line

情况:

我尝试在shell中循环移动文件,但我的代码无效。

for /D %%F in (*) do (
   if "%%F" NEQ "%directoryToPutFilesIn%" (
     move /y "%%F" "%directoryToPutFilesIn%"
  )
)

经过几个小时的测试后,我意识到这是因为%% F指向文件夹,因此文件无法移动。

解决方案不好:

我使其工作的方式并确认了我的怀疑是将%% F的值保存在另一个变量中并在下一轮使用该变量来移动文件。请注意,以下内容需要在第一个转弯时初始化%precedentFile%

for /D %%F in (*) do (
move /y "%precedentFile%" "%directoryToPutFilesIn%"
   if "%%F" NEQ "%directoryToPutFilesIn%" (
     move /y "%%F" "%directoryToPutFilesIn%"
     set precedentFile=%%F
  )

问题:

这种解决方案不实用且感觉错误。有没有办法调整我当前的代码来完成它,或者只是另一种方式?

1 个答案:

答案 0 :(得分:2)

尝试以下代码,以批处理脚本将文件从一个文件夹移动到另一个文件夹:

for /f %%a in ('dir /a:-D /b') do move /Y "%%~fa" "%directoryToPutFilesIn%"

说明:

dir /a:-D /b : This command will list all files in the directory 
move /Y "%%~fa" "%directoryToPutFilesIn%" : This will move all files in the directory where this command is executed to the destination you have mentioned.
%%~fa : This command will get full qualified path of the file with it's name.

尝试以下代码移动目录: 下面的命令会将执行此命令的Path中的目录移动到提供的目标。在此将是H:\ Drive,相应地更改

for /D %%b in (*) do move /Y "%%~fb" "H:\"