osc*_*tin 24 batch-file windows-7
回到90年代中期,我记得做过这样的事情:
if %1==. dir
Run Code Online (Sandbox Code Playgroud)
基本上,如果你把上面的代码放在dodir.bat并自己运行而不传递任何参数,它将运行dir命令.但是,如果您将任何内容作为参数传递给它,它将不会运行dir命令.
我似乎无法在我的Windows 7批处理文件中使用它.也许我不记得正确的语法.有帮助吗?
Tol*_*lga 54
if %1.==. dir将打破如果所述参数包括等的各种符号",<等
if "%1"==""如果参数包含quote("),则会中断.
if "%~1"==""改为使用:
if "%~1"=="" (
echo No parameters have been provided.
) else (
echo Parameters: %*
)
Run Code Online (Sandbox Code Playgroud)
这适用于所有版本的Windows和DOS.
单元测试:
C:\>test
No parameters have been provided.
C:\>test "Lots of symbols ~@#$%^&*()_+<>?./`~!, but works"
Parameters: "Lots of symbols ~@#$%^&*()_+<>?./`~!, but works"
Run Code Online (Sandbox Code Playgroud)
And*_*y M 19
实际上当时是(注意后).你可以在Windows 7中使用它,它应该工作.if %1.==. command.%1
用法示例:
if %1.==. (
echo No parameters have been provided.
) else (
echo Parameters:
echo %*
)
Run Code Online (Sandbox Code Playgroud)
dcp*_*dcp 12
尝试用引号括起来:
if "%1"=="" (
echo "nothing was passed"
) else (
echo "a parameter was passed"
dir
)
Run Code Online (Sandbox Code Playgroud)
你可以把回声拿出来,我只是把它们放在那里用于教育目的.