以下简单批处理文件无法按预期工作。它意味着接受一个参数,如果没有提供,它使用默认值(在这种情况下为“default”)。
相反,如果没有提供参数,它会为变量Arg。
分配一个空字符串TEST.BAT:
@echo off
set Arg=%1
if "%Arg%"=="" (
set Arg=Default
echo No Arg, so use default value=%Arg%
) else (
echo Arg=%Arg%
)
pause
Test.bat的输出是:
No Arg, so use default value=
Press any key to continue . . .
答案 0 :(得分:2)
使用
setlocal enabledelayedexpansion
然后!Arg!
而不是%Arg%
。并阅读help set
解释所有这一切。
答案 1 :(得分:1)
尝试
@echo off
set Arg=%1
if not defined arg set Arg=Default&echo No Arg, so use default
echo Arg=%Arg%
问题是在一个块(括号系列语句)中,变量在PARSE时解析 - 在执行指令之前。
@echo off
set Arg=%1
if not defined arg set Arg=Default&call echo No Arg, so use default=%%arg%%
echo Arg=%Arg%
如果您确实希望在报告行上显示默认值。
答案 2 :(得分:0)
@echo off
if [%1] == [] (
set Arg=Default
) else (
set Arg=%1
)
@echo Arg=%Arg%
答案 3 :(得分:0)
@echo off
set arg=default
if not "%~1"=="" set "arg=%~1"
echo arg is ""%arg%"