【问题标题】:Select files in Windows using list file with base names and wildcards使用带有基本名称和通配符的列表文件在 Windows 中选择文件
【发布时间】:2014-07-11 14:47:52
【问题描述】:

我正在尝试根据包含基本名称的列表文件中的一组基本名称从目录中选择 (jpeg) 文件的子集。

该目录包含数以万计的文件,其名称如下:

1234_Inlet.jpg
5678-Upstream.jpg
12345_Outlet.jpg
67890-Downstream2.jpg
D0305_DownstreamFace.jpg
NBSheep6-UpstreamView2.jpg

也就是说,有多种基本名称包含不同长度的字母数字字符,后跟连字符或下划线,然后是更多字符,后跟“.jpg”。

我将用于从该目录中选择文件子集的列表将仅包含基本名称:

1234
5678
12345
67890
D0305
NBSheep6

谁能告诉我如何用适当的循环和通配符构造一个批处理文件来选择和复制这些文件的子集并将它们写入新目录?

【问题讨论】:

  • 您可以轻松选择所有以例如开头的文件1234 与通配符 1234*。输入的具体格式是什么?

标签: windows batch-file


【解决方案1】:
for /f "usebackq tokens=*" %%a in ("c:\somewhere\basefilenames.txt"
) do for %%b in ( _ - ) do (
    copy "c:\where\the\files\are\%%a%%b*.jpg" "c:\archived\files\folder"
)

对于每个基本名称(在指示的文件中)和分隔符,将匹配 basename+separator*.jpg 的文件复制到目标文件夹

【讨论】:

  • 感谢您的快速回答。很抱歉我的技能如此有限,但是我可以在 CMD 中运行那个 sn-p 只更改明显的文件名吗?
  • @AlexA,从命令行for 可替换参数不使用双百分号%%a 语法。只使用了一个百分号。你必须使用for /f .... %a in .... for %b in .... copy "...\%a%b*.jpg"
  • 非常感谢您对命令行使用的澄清。
  • 谢谢,MC ND,一旦我对您在此处提到的命令行使用进行了调整,它就像一个魅力。
猜你喜欢
  • 2021-06-07
  • 2018-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多