我尝试与this question中的基本相同,即我想循环遍历目录中的文件,但排除在其名称中包含某个字符串的文件(在我的情况下为“.new”。)但问题是我正在使用
setlocal DisableDelayedExpansion
因为我希望批处理也能使用包含感叹号的文件名。因此我尝试使用循环变量%% x而不是新变量来使解决方案正常工作,但这似乎不起作用:
setlocal DisableDelayedExpansion
For %%x in (*.mkv *.mp4) do (
If "%%x" == "%%x:.new." (
Echo Skipped "%%x"
) Else (
Echo Processing "%%x"
)
)
字符串匹配不起作用,即我得到
Processing "file.mkv"
Processing "file.new.mkv"
我将非常感谢任何关于如何使其发挥作用的暗示;谢谢!
答案 0 :(得分:1)
批量字符串操作命令无法直接应用于metavariables
%%x
。
echo %%x|findstr /i /L ".new.">nul
if errorlevel 1 (
echo process %%x
) else (
echo skip %%x
)
应该适合您,从字面上找到字符串.new.
/l
,/i
不区分大小写。如果找到则将errorlevel
设置为0
,否则设置为非{0}。