Я предлагаю в качестве кода:
for /F "usebackq delims=" %%a in ("C:\Test\PCList.txt") do (
if exist "\\%%a\%Target32%" %SystemRoot%\System32\robocopy.exe "%source32%" "\\%%a\%Target32%" /tbd /s /is /ndl /nfl /log+:"%logdir%\%%a_x86_%date:~10,4%.%date:~7,2%.%date:~4,2%.log"
if exist "\\%%a\%Target64%" %SystemRoot%\System32\robocopy.exe "%source64%" "\\%%a\%Target64%" /tbd /s /is /ndl /nfl /log+:"%logdir%\%%a_x64_%date:~10,4%.%date:~7,2%.%date:~4,2%.log"
)
Я надеюсь, что переменные окружения Target32
и Target64
определены с обратной косой чертой в конце, чтобы действительно проверить существование каталога и скопировать файлы в source32
и source64
в каталог.
Кстати: ваш код с ненужными ELSE END
не приводит ни к одному из двух каталогов, существующих в сообщении об ошибке:
«END» не распознается как внутренняя или внешняя команда,
работающая программа или командный файл.
Я бы также предложил для имени файла журнала %date:~10,4%-%date:~7,2%_%date:~4,2%.log
с -
вместо .
между годом и месяцем и между месяцем и днем. В имени файла должна быть только одна точка, одна для расширения файла, хотя в имени файла может быть несколько точек.
Этот код документирует также, если ни один из двух каталогов не может быть найден на целевом компьютере:
if not "%Target32:~-1%" == "\" set "Target32=%Target32%\"
if not "%Target64:~-1%" == "\" set "Target64=%Target64%\"
for /F "usebackq delims=" %%a in ("C:\Test\PCList.txt") do (
set "Copied="
if exist "\\%%a\%Target32%" set "Copied=1" & %SystemRoot%\System32\robocopy.exe "%source32%" "\\%%a\%Target32%" /tbd /s /is /ndl /nfl /log+:"%logdir%\%%a_x86_%date:~10,4%-%date:~7,2%-%date:~4,2%.log"
if exist "\\%%a\%Target64%" set "Copied=1" & %SystemRoot%\System32\robocopy.exe "%source64%" "\\%%a\%Target64%" /tbd /s /is /ndl /nfl /log+:"%logdir%\%%a_x64_%date:~10,4%-%date:~7,2%-%date:~4,2%.log"
if not defined Copied echo Nothing copied to %%a.>"%logdir%\%%a_err_%date:~10,4%-%date:~7,2%-%date:~4,2%.log"
)
Чтобы понять используемые команды и то, как они работают, откройте окно командной строки, выполните там следующие команды и полностью прочитайте все страницы справки, отображаемые для каждой команды.
for /?
if /?
robocopy /?
set /?