@Echo Off
Setlocal Enabledelayedexpansion

Set Srccntr=0
Set Destcntr=0
Set Logcntr=0


If '%1'=='' Goto :Help
Goto :Begin

:Help
Echo Убедитесь, что все аргументы указаны правильно!
Echo Пример синтаксиса %0 /S:"D:sourcelocation" /D:"Serverdestinationlocation" /L:"D:logfileslog.txt"
Goto :EOF

:Begin

BEGIN COMMENT
:: Работа с аргументом Source
END COMMENT
For /D %%i in (%1 %2 %3) do (
Set argnum=%%i
For /F "tokens=*" %%j in (Echo !argnum!^|find /I "/S:"') do (
Set Source=%%j
Set /A Srccntr+=1
)
)
BEGIN CALLOUT A
If %Srccntr% GTR 1 Echo Дублирование аргумента Source &Goto :EOF
END CALLOUT A
If not Defined Source Echo /S: Аргумент Source не найден &Goto :EOF
Echo Аргумент Source: !Source:/S:=!

BEGIN COMMENT
:: Работа с аргументом Destination
END COMMENT
for /D %%i in (%1 %2 %3) do (
Set argnum=%%i
For /F "tokens=*" %%j in (Echo !argnum!^|find /I "/D:"') do (
Set Dest=%%j
Set /A Destcntr+=1
)
)
If %Destcntr% GTR 1 Echo Дублирование аргумента Destination &Goto :EOF
If not Defined Dest Echo /D: Аргумент Destination не найден &Goto :EOF
Echo Аргумент Destination: !Dest:/D:=!

BEGIN COMMENT
:: Работа с аргументом Log
END COMMENT
for /D %%i in (%1 %2 %3) do (
Set argnum=%%i
For /F "tokens=*" %%j in ('Echo !argnum!^|find /I "/L:"') do (
Set Log=%%j
SET /A Logcntr+=1
)
)
If %Logcntr% GTR 1 Echo Дублирование аргумента Log &Goto :EOF
If not Defined Log Echo /L: Аргумент Log не найден &Goto :EOF
Echo Аргумент Log: !Log:/L:=!

Set Source=!Source:/S:=!
Set Dest=!Dest:/D:=!
Set Log=!Log:/L:=!
Echo.
if not exist %Source% Echo Внимание: %Source% не существует
if not exist %Dest% Echo Внимание: %Dest% не существует
Echo.
Echo Robocopy готова к запуску со следующими аргументами:
Echo Robocopy %Source% %Dest% /E /PURGE /SEC /NP /R:1 /W:1 /LOG+:%Log%
Echo Прервите выполнение сейчас или нажмите любую клавишу для продолжения...
Pause>NUL
BEGIN COMMENT
:: В данный момент приведенная ниже команда запуска Robocopy
:: закомментирована, чтобы можно было
::запускать сценарий в демонстрационных целях.
:: Когда вы будете готовы к запуску сценария
:: с использованием Robocopy, удалите из ее строки запуска
:: знак комментария.
END COMMENT
:: Robocopy %Source% %Dest% /E /PURGE /SEC /NP /R:1 /W:1 /LOG+:%Log%

goto :EOF

Поделитесь материалом с коллегами и друзьями