繁体   English   中英

批处理文件循环 - 如果文件名包含字符串,则跳过文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM