我想编写一个脚本来获取目录中的所有文件名,并使用 all 排除文件名。
我想出了以下脚本,但它不起作用,有人可以帮助我吗?
for /R "%SOME_DIRECTORY%" %%f in (*.testcase) do (
set CURRENT_TESTCASE=%%~nf
if not %CURRENT_TESTCASE:~-3%==all (
echo %%~nf >> "%FILELIST%"
)
)
答案 0 :(得分:7)
在执行循环体之前评估CURRENT_TESTCASE
变量。 (这就是命令处理器处理包含parantheses的复合命令的方式。)
为防止过早评估变量,您需要在本地启用delayed expansion变量并稍微更改语法。方法如下:
for /R "%SOME_DIRECTORY%" %%f in (*.testcase) do (
set CURRENT_TESTCASE=%%~nf
setlocal EnableDelayedExpansion
if not !CURRENT_TESTCASE:~-3!==all (
echo %%~nf >> "%FILELIST%"
)
endlocal
)