Windows 7 Windows 7批处理文件:如何检查参数是否已传递到批处理文件

Windows 7 Windows 7批处理文件:如何检查参数是否已传递到批处理文件,windows-7,batch-file,Windows 7,Batch File,回到90年代中期,我记得做过这样的事情: if %1==. dir 基本上,如果您将上述代码放入dodir.bat中,并在不传递任何参数的情况下自行运行它,它将运行dir命令。但是,如果您将任何内容作为参数传递给它,它将不会运行dir命令 在我的Windows7批处理文件中,我似乎无法使其工作。也许我不记得正确的语法。有帮手吗?尝试用引号括起来: if "%1"=="" ( echo "nothing was passed" ) else ( echo "a parameter

回到90年代中期,我记得做过这样的事情:

if %1==. dir
基本上,如果您将上述代码放入
dodir.bat
中,并在不传递任何参数的情况下自行运行它,它将运行dir命令。但是,如果您将任何内容作为参数传递给它,它将不会运行dir命令


在我的Windows7批处理文件中,我似乎无法使其工作。也许我不记得正确的语法。有帮手吗?

尝试用引号括起来:

if "%1"=="" (
    echo "nothing was passed"
) else (
    echo "a parameter was passed"
    dir
)

你可以取出回音,我只是出于教育目的把它们放在那里。

如果%1,实际上是
。命令
(请注意
%1
之后的
)。现在你可以在Windows7中使用它,它应该可以工作了

用法示例:

if %1.==. (
    echo No parameters have been provided.
) else (
    echo Parameters:
    echo %*
)

如果%1.==。如果参数包含各种符号,例如
”,
则dir
将中断。一个“一网打尽”的示例:您可以详细说明或传递一个关于%1的作用的引用吗?@josejulio您可以执行“call/?”以获取有关您可以使用参数执行的所有奇特操作的详细信息。对于%1,它说:展开%1删除任何周围的引号(“)“句号”代表什么?@RishabhBhatnagar:我不相信它代表任何具体的东西。它只是为了避免
%1
计算为空字符串时出现语法错误。它可能是其他字符,事实上,我也见过其他字符被使用(例如,
如果%1A==A
),但是
可能是这个特定模式中最常用的字符。请注意,这种模式在过去的DOS时代很流行。如今,
如果“%~1”==”
,as,将是首选方法。
if "%~1"=="" (
    echo No parameters have been provided.
) else (
    echo Parameters: %*
)
C:\>test
No parameters have been provided.

C:\>test "Lots of symbols ~@#$%^&*()_+<>?./`~!, but works"
Parameters: "Lots of symbols ~@#$%^&*()_+<>?./`~!, but works"