Windows 7 Windows 7批处理文件:如何检查参数是否已传递到批处理文件
回到90年代中期,我记得做过这样的事情: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
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"