【发布时间】:2018-04-26 18:18:56
【问题描述】:
我有一个批处理脚本,其中包含一行将递归查找目录并将匹配指定文件名的文件复制到另一个目录:
FOR /R "J:\" %%G in (*FINAL.pdf) DO COPY "%%G" "C:\Users\user\discimport\" /Y
效果很好。然而,最近这里的文件命名约定发生了变化,文件现在不再方便地以“*FINAL.pdf”结尾。现在需要以“*Sign_Off *.pdf”的形式找到它们。父目录现在将以 datecode 下划线 final 结尾,如下所示:“20180426_Final”。我尝试将脚本中的行修改为对我的非 Windows 敏感性而言似乎合乎逻辑的内容:
FOR /R "J:\*\*_Final" %%G in (*Sign_Off*.pdf) DO COPY "%%G" "C:\Users\user\discimport\" /Y
但它没有用。我一直在阅读这篇文章,似乎无法找到一个直接的答案,如何使用正确的语法来格式化它。看来通配符只能用在路径的末尾。有没有办法使用批处理脚本正确格式化它,还是我必须尝试 powershell?
【问题讨论】:
-
文件名只能使用通配符。
-
路径中不需要通配符,/R 会导致递归到所有子目录。
-
您是否尝试将“工作”脚本中的
*FINAL.pdf替换为*Sign_Off*.pdf,或者您的问题是J:驱动器上的其他地方会有其他*Sign_Off*.pdf文件但不在以_Final结尾的目录名 -
没错。所有目录的文件中都有
*Sign_Off*.pdf,但我只需要来自` ********_Final\ `目录的那些。
标签: windows batch-file wildcard