Почему переформатирование успешного пакетного файла вызывает сбой? - PullRequest
0 голосов
/ 04 июня 2018

Следующий пакетный файл был написан @Compo в другом посте.Это потребовалось одному из моих внуков в школе, поэтому я просто отправил файл по почте, как есть.Это отлично сработало для меня и для нее.

Пакет добавляет подкаталог к ​​E:\Evernote.

Имя подкаталога - это дата в yyyy_mm_dd.

Файлы копируются из C: в новый подкаталог.

@Echo Off
Set "sd=C:\EverNote"
Set "dd=E:\EverNote"
Set "ds="
If Not Exist "%sd%\" Exit /B
For /F "Tokens=1-3Delims=/ " %%A In ('RoboCopy/NJH /L "\|" Null'
) Do If Not Defined ds Set "ds=%%A_%%B_%%C"
If Not Defined ds Exit /B
RoboCopy "%sd%" "%dd%\%ds%" /E

Теперь нагрев отключен, но через несколько недель вторая часть проекта должна представить документальный пакетный файл для маркировки.Моим первым шагом было сделать партию более «читабельной», используя правила школы.Это означает использование пар круглых скобок для окружения условных операторов и большого количества «пробелов» и операторов REM.

Проблема: После добавления скобок и пробелов, без изменения каких-либо операторов (AFAIK),следующая переформатированная партия завершается неудачно через несколько строк.

@Echo Off
Set "sd=C:\EverNote"
Set "dd=E:\EverNote"
Set "ds="

REM The next @echo is respected
@echo "If Not Exist"

REM After the next "Pause", and hitting any key, the batch exits.
REM IMO, that means "Exit /B" is being executed. 
REM In turn, that means "%sd%\" does not exist. Why not?

Pause

If Not Exist "%sd%\" 
(    
    Exit /B
)      

For /F "Tokens=1-3Delims=/ " %%A In ('RoboCopy/NJH /L "\|" Null') Do 
(
    If Not Defined ds 
    (
        Set "ds=%%A_%%B_%%C"
    )
)

If Not Defined ds 
(
    Exit /B
)

RoboCopy "%sd%" "%dd%\%ds%" /E

Pause

Буду признателен, если кто-нибудь сможет объяснить, как изменение в форматировании может привести к сбою.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...