情况:
我尝试在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
)
问题:
这种解决方案不实用且感觉错误。有没有办法调整我当前的代码来完成它,或者只是另一种方式?
答案 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:\"