我曾经使用循环到文件夹和所有子文件夹的批处理,并移动在其他地方找到的所有文件。
对此批次进行了修改,现在,主循环不再起作用了。
set "arg1=%~1"
setlocal enabledelayedexpansion
cd /d D:\!arg1!
set /a count=0
for /r %%i in (*.*) do (
...
)
运行
myBatch test
获得%i was unattended
最奇怪的是我没有改变这部分代码
答案 0 :(得分:1)
如果你有一个组合名称作为参数,请在CD
:
set "arg1=%~1"
cd /d "D:\%arg1%"
setlocal enabledelayedexpansion
set /a count=0
for /r %%i in (*.*) do (
...
)
答案 1 :(得分:0)
我看到的一件事会导致问题,如果你传递了一个文件夹的名称!在文件夹名称中。改变
cd /d D:\!arg1!
到
cd /d D:\%arg1%
您不需要延迟该行的扩展,因为它不在FOR循环或带括号的代码块中。实际上,对于您显示的代码,您根本不需要setlocal enabledelayedexpansion ...当然,可能需要未显示的代码。
此外,如果文件夹名称中有空格,请务必在调用bat文件时引用参数(文件夹名称)。
如果这些都无法解决您的问题,我们能否看到更多代码?至少包含%% i
的代码部分