批处理文件中的通配符未按预期工作

Posted

技术标签:

【中文标题】批处理文件中的通配符未按预期工作【英文标题】:Wildcard in batch file not working as anticipated 【发布时间】:2020-12-17 18:44:48 【问题描述】:

我有一堆以下列模式命名的文件 FILENAME0.ext FILENAME1.ext FILENAME2.ext FILENAME3.ext FILENAME4.ext,我正在尝试复制具有特定编号的文件文件名的末尾到不同的文件夹。

所以我举例:

xcopy "C:\testfolder\*1.ext" "C:\testfolder\folder1"

但由于某种原因,它不仅会复制以 1 结尾的文件,还会复制其他一些文件(有点不一致)。 奇怪的是 - 它确实适用于文件名以 0 结尾的文件。 看来我对 * 通配符有什么不明白的地方?或者也许有更好的方法来完成这项任务?

【问题讨论】:

dir /x "C:\testfolder\*1.ext" 显示什么? 嗯,谢谢。带有 /x 的 dir 显示文件名以 1 结尾但也以短文件名(8.3 文件名)结尾的文件。我不知道文件可以有两个文件名。我还找到了一个解决方案 - 过滤掉短文件名:for %%A in (C:\testfolder\*1.ext) do @echo %%A | >nul findstr 1.ext && xcopy "%%A" "C:\testfolder\folder1" 【参考方案1】:

您可以使用where.exe,它会忽略 8.3 名称:

@For /F Delims^= %%G In ('"(Set PATHEXT=) & "%__AppDir__%where.exe" "C:\testfolder":"*1.ext" 2> NUL"') Do @"%__AppDir__%xcopy.exe" "%%G" "C:\testfolder\folder1\" /QHRKY 1> NUL

【讨论】:

以上是关于批处理文件中的通配符未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

React 中的 gRPC 流式处理未按预期工作

使用 jQuery 将值发布到 api 未按预期工作

重叠 SVG 元素的鼠标处理未按预期工作

烧瓶中的蓝图模板文件夹未按预期工作

couchdb/cloudant 更新处理程序未按预期工作

复制到输出目录未按预期工作