早在90年代中期,我记得做这样的事情:Windows 7的批处理文件:如何检查是否参数已经传递到批处理文件
if %1==. dir
基本上,如果你把上面的代码中dodir.bat
并运行它自己而不传递任何参数,它会运行dir命令。但是,如果您将任何参数都作为参数传递,它将不会运行dir命令。
我似乎无法得到这个在我的Windows 7批处理文件中工作。也许我不记得正确的语法。任何助手?
早在90年代中期,我记得做这样的事情:Windows 7的批处理文件:如何检查是否参数已经传递到批处理文件
if %1==. dir
基本上,如果你把上面的代码中dodir.bat
并运行它自己而不传递任何参数,它会运行dir命令。但是,如果您将任何参数都作为参数传递,它将不会运行dir命令。
我似乎无法得到这个在我的Windows 7批处理文件中工作。也许我不记得正确的语法。任何助手?
其实它是if %1.==. command
(注意在%1
之后的.
)。你现在可以在Windows 7中使用它,它应该可以工作。
实例:
if %1.==. (
echo No parameters have been provided.
) else (
echo Parameters:
echo %*
)
啊..现在我记得了! thx – oscilatingcretin 2011-04-20 21:01:46
尝试在引号引起:
if "%1"=="" (
echo "nothing was passed"
) else (
echo "a parameter was passed"
dir
)
您可以回声的出来,我只是把它们放在那里的教育目的。
if %1.==. dir
将打破如果所述参数包括各种符号等"
,<
等
if "%1"==""
将打破如果所述参数包括报价("
)。
使用if "%~1"==""
代替:
if "%~1"=="" (
echo No parameters have been provided.
) else (
echo Parameters: %*
)
这应该在Windows和DOS的所有版本。
单元测试:
C:\>test
No parameters have been provided.
C:\>test "Lots of symbols [email protected]#$%^&*()_+<>?./`~!, but works"
Parameters: "Lots of symbols [email protected]#$%^&*()_+<>?./`~!, but works"
一个 “一网打尽” 的例子:http://stackoverflow.com/questions/830565/how-do-i-check-that-a-parameter-is-defined-什么时候打电话批量文件/ 34552964#34552964 – 2016-01-01 01:47:53