[英]Batch File Loop - Skip file, if file name contains string
我试图做与这个问题基本上相同的事情,即我想遍历目录中的文件,但排除名称中包含某个字符串的文件(在我的情况下为“.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"
任何有关我如何使其工作的提示将不胜感激; 谢谢!
批处理字符串操作命令不能直接metavariables
像%%x
这样的元metavariables
。
echo %%x|findstr /i /L ".new.">nul
if errorlevel 1 (
echo process %%x
) else (
echo skip %%x
)
应该对你.new.
,找到字符串.new.
/l
字面意思, /i
不区分大小写。 如果找到,则将errorlevel
设置为0
,否则设置为非 0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.