Hello Batch File专家,
我编写了这段代码,它将打印文件夹中存在的最新文件版本,与作为参数发送的文件名进行比较,但是当我删除外部for循环时,这些行似乎相应地工作,我设计为循环很多时候作为CLI参数。
FOR /f %%f IN ('DIR /b %%a.*.zip') DO @SET last=%%f
ECHO %last%
完整代码:
cd C:\Users\batch\Desktop\test
chdir
set arg1=%1
set arg2=%2
set list=%arg1% %arg2%
(for %%a in (%list%) do (
FOR /f %%f IN ('DIR /b %%a.*.zip') DO @SET last=%%f
ECHO %last%
))
pause
我在这里缺少的是因为当外部循环存在时,哪个变量last没有设置值,没有它就可以正常工作。
谢谢,
答案 0 :(得分:0)
您需要使用delayed expansion
(此处约有一万件SO物品)或使用子程序或
call echo %%last%%
答案 1 :(得分:0)
我建议您改用SHIFT:
@Echo Off
SetLocal
If %1'==' Exit/B
If /I Not "%CD%"=="%USERPROFILE%\Desktop\test" (
PushD "%USERPROFILE%\Desktop\test" 2>Nul&&(Set _=PopD)||Exit/B)
:Loop
For %%A In ("%~1*.zip") Do Set "last=%%A"
Echo=%last%
Shift
If Not %1'==' GoTo Loop
%_%
EndLocal
Timeout -1
这当然意味着您可以自由地使用两个以上的参数!