批处理文件中的循环不移动文件

批处理文件中的循环不移动文件

我正在循环遍历某个目录,如果存在 zip 文件或文件,则它们将被移动到该目录中的辅助文件夹,但是下面的代码似乎不起作用,即它不会移动文件。我做错了什么?

for %%i in (D:\test\*.*) do if %%~xi == ".zip" move /Y "D:\test\%%~ni%%~xi" "D:\test\complete"

答案1

比较文件扩展名时,也将当前文件的扩展名放在引号中,如下所示:

for %%i in (D:\test\*.*) do if "%%~xi" == ".zip" move /Y "D:\test\%%~ni%%~xi" "D:\test\complete"

我已经测试过了,并且它运行良好。

要使用子程序,请尝试以下操作:

for %%i in (D:\test\*.*) do call :checkextension %%i

:checkextension
if "%~x1" == ".zip" move /Y "%~1" "D:\test\complete"
goto:eof

请注意每个文件的路径(%%i)如何作为参数传递给:checkextension子程序,然后子程序以扩展名%~1(或%~x1仅在需要扩展名时)访问它。

相关内容