带有两个命令的双管语句,在`for`循环上使用`&&`'(批处理脚本)

时间:2017-07-07 12:01:21

标签: windows batch-file for-loop

基于answers以及此question的评论,我无法理解如何使用||添加两个命令的双管&&语句一个for循环。请考虑以下从here获取的示例:

@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"

set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause

如果我尝试

for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a" || echo Error while getting datetime. >> %someoutputfile% && GOTO endthis

我收到Unexpected &&错误。我尝试在||之后在每个命令周围添加括号,但它们也给出了Unexpected )类似的错误。

有人可以解释我做错了什么吗?我应该将||命令放在do set "dt=%%a"之前吗?

2 个答案:

答案 0 :(得分:1)

您也可以使用这种方法:

(for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a") || rem

if errorlevel 1 echo Error while getting datetime. >> %someoutputfile% & GOTO endthis

此方法在this answer退出代码管理下完整描述。

答案 1 :(得分:0)

这是一个有效的例子:

@ echo off

for /f "tokens=2 delims==" %%a in ('WMIC OS Get LocalDateTime /value') do (
    set dt=%%a && (
        echo Local Data Time: "%dt%"
    ) || (
        echo Error while getting datetime.
        goto ERROR
    )
)

echo Exiting...
goto END

:ERROR
echo Terminating...

:END