批处理脚本的路径中的通配符

时间:2018-04-26 18:18:56

标签: windows batch-file wildcard

我有一个包含一行的批处理脚本,该行将递归查看目录并将匹配指定文件名的文件复制到另一个目录:

FOR /R "J:\" %%G in (*FINAL.pdf) DO COPY "%%G" "C:\Users\user\discimport\" /Y

效果很好。但是,最近在工作中文件命名约定发生了变化,文件现在不再方便地以#34; * FINAL.pdf"结尾。现在他们需要被发现为" * Sign_Off * .pdf"。现在,父目录将以日期代码下划线最终结束,如下所示:" 20180426_Final"。我尝试将脚本中的行修改为我的非windows敏感度似乎合乎逻辑:

FOR /R "J:\*\*_Final" %%G in (*Sign_Off*.pdf) DO COPY "%%G" "C:\Users\user\discimport\" /Y

但它没有用。我一直在阅读这篇文章,似乎无法找到一个直接的答案,如何使用正确的语法对其进行格式化。看起来通配符只能在路径的末尾使用。有没有办法使用批处理脚本正确格式化这个或者我必须尝试使用​​powershell吗?

1 个答案:

答案 0 :(得分:0)

Robocopy是你的朋友。键入help robocopy以获取其完整功能的列表,并输入以下行的说明,该行应替换您的for循环:

for /f %%G in ('dir /B /A:D *_Final') do robocopy j:\ "%%G" *Sign_Off*.pdf /MT /S /ZB

/A:D选项将目录列表限制为仅匹配模式的目录,/B将输出限制为简单列表。你会发现robocopy比for循环要快得多,而且更容易使用。