Batch file 为什么重新格式化成功的批处理文件会导致失败?

Batch file 为什么重新格式化成功的批处理文件会导致失败?,batch-file,Batch File,以下批处理文件是@Compo在另一篇文章中编写的。这是我在学校的一个孙子孙女要求的,所以我只是照原样通过电子邮件发送了文件。这对我和她都非常有效 该批处理将子目录添加到E:\Evernote 子目录的名称是yyyy\u mm\u dd中的日期 文件从C:复制到新的子目录 @Echo Off Set "sd=C:\EverNote" Set "dd=E:\EverNote" Set "ds=" If Not Exist "%sd%\" Exit /B For /F "Tokens=1-3Delim

以下批处理文件是@Compo在另一篇文章中编写的。这是我在学校的一个孙子孙女要求的,所以我只是照原样通过电子邮件发送了文件。这对我和她都非常有效

该批处理将子目录添加到
E:\Evernote

子目录的名称是
yyyy\u mm\u 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

如果有人能解释一下格式的更改是如何导致失败的,我将不胜感激。

必须与
处于同一物理线路上,如果
OldGrantonian,您和我都不应该为其他人的项目提供要标记的工作。这是学术上的不诚实行为,并且您的孙子没有我的许可将其任何部分用于此类目的!阅读您尝试执行的命令的帮助文件做得很好使用。如果你读过它们,你肯定不会写这样的代码。@OldGrantonian,背景故事是无关紧要的,如果你真的爱你的孙女并珍视她,你会通过鼓励和建议支持她的学习,而不是向他们表明欺骗和剽窃是可以接受的行为。@Squashman,TBF他们没有时间,他们忙着做别人的数学评估!