我想写一个脚本来获取目录中的所有文件名,并排除以 all 结尾的文件名。
我想出了下面的脚本,但它不起作用,有人能帮我吗?
for /R "%SOME_DIRECTORY%" %%f in (*.testcase) do (
set CURRENT_TESTCASE=%%~nf
if not %CURRENT_TESTCASE:~-3%==all (
echo %%~nf >> "%FILELIST%"
)
)
最佳答案
CURRENT_TESTCASE
变量在执行循环体之前进行评估。 (这就是命令处理器处理包含括号的复合命令的方式。)
为了防止过早评估变量,您需要启用 delayed expansion本地变量并稍微更改语法。方法如下:
for /R "%SOME_DIRECTORY%" %%f in (*.testcase) do (
set CURRENT_TESTCASE=%%~nf
<b>setlocal EnableDelayedExpansion</b>
if not <b>!</b>CURRENT_TESTCASE:~-3<b>!</b>==all (
echo %%~nf >> "%FILELIST%"
)
<b>endlocal</b>
)
关于windows - 如何在循环中获取局部变量的子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5752405/