回到90年代中期,我记得做过这样的事情:
if %1==. dir
基本上,如果你把上面的代码放在dodir.bat
并自己运行而不传递任何参数,它将运行dir命令。但是,如果您将任何内容作为参数传递给它,它将不会运行dir命令。
我似乎无法在Windows 7批处理文件中使用此功能。也许我不记得正确的语法。有帮助吗?
答案 0 :(得分:52)
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 ~@#$%^&*()_+<>?./`~!, but works"
Parameters: "Lots of symbols ~@#$%^&*()_+<>?./`~!, but works"
答案 1 :(得分:15)
实际上当时是if %1.==. command
(注意.
之后的%1
)。你可以在Windows 7中使用它,它应该可以工作。
使用示例:
if %1.==. (
echo No parameters have been provided.
) else (
echo Parameters:
echo %*
)
答案 2 :(得分:11)
尝试用引号括起来:
if "%1"=="" (
echo "nothing was passed"
) else (
echo "a parameter was passed"
dir
)
你可以把回声拿出来,我只是把它们放在那里用于教育目的。