【问题标题】: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"

标签: windows batch-file wildcard batch-processing xcopy


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多