批处理文件分配困难

时间:2013-12-27 18:10:34

标签: batch-file cmd

以下简单批处理文件无法按预期工作。它意味着接受一个参数,如果没有提供,它使用默认值(在这种情况下为“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 . . . 

4 个答案:

答案 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%

参考:How to check command line parameter in ".bat" file?

答案 3 :(得分:0)

@echo off
set arg=default
if not "%~1"=="" set "arg=%~1"
echo arg is ""%arg%"