gpt4 book ai didi

batch-file - 批处理 : question mark wildcard not working with dots

转载 作者:行者123 更新时间:2023-12-03 18:04:12 24 4
gpt4 key购买 nike

我有一个脚本尝试按标题查找重复的视频。我从文件名推断出标题,并尝试在关键字之间使用 ? 通配符搜索以相同名称开头的其他文件:

for/r %%i in ("%string%*") do set/a count+=1

其中 %string 的格式为 The?Title?S01E01 所以我使用 "The?Title?S01E01*" 进行搜索当单词用空格等分隔时效果很好,但当分隔符是点时它会失败。我该如何克服这个问题?我必须在我做过的每个脚本中为此添加一个单独的处理程序。

最佳答案

您对的理解是错误的。它不匹配任何单个字符。相反,它匹配除 . 之外的任何字符。如果没有要匹配的字符(在名称末尾或 . 之前),则 ? 将匹配“无”而不会失败。

我在How does the Windows RENAME command interpret wildcards?描述了这种行为关于 super 用户。

此行为对于几乎所有 Windows 标准命令都是一致的。但至少有一个异常(exception),即 where 命令,如 pointed out by aschipfl 。他的 where 解决方案可能是解决您问题的最简单的解决方案。

一个明显更复杂的替代方案是使用 FINDSTR 和适当派生的正则表达式来优化结果。初始 FOR 搜索将用 * 替换字符串中的所有 ?

set "string2=%string:.=\.%"
set "string2=%string2:?=.%"
set "string2=%string2:*=.*%"
set "string2=%string2:^=\^%"
set "string2=%string2:$=\$%"
for /r %%i in ("%string:?=*%*") do echo %%~nxi|findstr /ric:"^%string2%" >nul && set /a count+=1

关于batch-file - 批处理 : question mark wildcard not working with dots,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45148221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com