2017-01-30 4 views
0

На сервере моей компании ежедневно появляются обновления для 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\. 

Но это не работает.

+0

Что вы пробовали до сих пор? Этот веб-сайт не является местом для посещения, когда вы хотите, чтобы кто-то еще написал вам всю программу. Если у вас есть определенная проблема о какой-то программе, которую вы написали, которая не работает так, как предполагалось, то это идеальный вопрос для этого сайта. Если вы еще не начали, я предлагаю вам сначала попробовать что-то, прежде чем приходить сюда, обращаясь за помощью. –

+0

для/f "delims ="% a in ('dir "\\ serv1 \ everyday \ abcd \ x64 _ * \ Disk \ system \"') сделать robocopy/MAXAGE: 1% a C: \ Latest \ – anything

+0

Пожалуйста, добавьте это информацию на ваш вопрос, чтобы другие могли видеть –

ответ

0

Вы можете использовать глобальную дикую-карту, как * и ? в последнем элементе только пути.

Следующий подход, вероятно, то, что вы ищете:

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 
Смежные вопросы