路径名中的通配符

时间:2017-01-30 05:40:28

标签: batch-file cmd pattern-matching wildcard

我公司的服务器每天都有32位和64位系统的更新。 我必须将最新的文件夹更新复制到位置C:\Latest\。更新发生的路径如下所示:

\\serv1\everyday\abcd\x64_00-0123-2068\
\\serv1\everyday\abcd\x86_00-0123-2077\
\\serv1\everyday\abcd\x64_00-0122-2067\
\\serv1\everyday\abcd\x86_00-0122-2076\
\\serv1\everyday\abcd\x64_00-0121-2066\
\\serv1\everyday\abcd\x86_00-0121-2075\
\\serv1\everyday\abcd\x64_00-0120-2065\
\\serv1\everyday\abcd\x86_00-0121-2074\
...

所以基本上我每天都要复制最新的(按日期和时间)...\x64_00...\disk\system文件夹。如何为此编写批处理脚本?如何在文件夹名称中使用通配符?

我试过这个:

for /f "delims=" %a in ('dir "\\serv1\everyday\abcd\x64_*\Disk\system\" ') do robocopy /MAXAGE:1 %a C:\Latest\.

但它没有用。

1 个答案:

答案 0 :(得分:1)

您只能在路径的最后一个元素中使用*?等全局通配符。

您可能正在寻找以下方法:

pushd "\\serv1\everyday\abcd" || exit /B 1
for /F "delims=" %%D in ('
    dir /B /A:D /O:N "x64_*"
') do set "LATEST=%%~D"
robocopy "%LATEST%\Disk\system" "C:\Latest" /MAXAGE:1
popd