MxL*_*evs 63 windows batch-file
我正在做一个简单的批处理文件,需要一个参数(你可以提供更多,但我忽略它们).
为了测试,这是我到目前为止.
if not %1 == "" (
dir /s/b %1
) else (
echo no
)
Run Code Online (Sandbox Code Playgroud)
基本上,我想说如果提供了一个参数,递归显示文件夹中的所有文件.否则,说不.
当我提出一个论点时,它会起作用,但如果我不提供论证,它就会告诉我( was unexpected at this time.
我的意思是,它有效,但我想至少显示一个用户友好的消息,解释为什么它不起作用.我该如何更改代码?
sch*_*der 74
if not %1 == "" (
Run Code Online (Sandbox Code Playgroud)
一定是
if not "%1" == "" (
Run Code Online (Sandbox Code Playgroud)
如果没有给出一个参数,它就完全是空的,不是偶数""(它代表了大多数编程语言中的空字符串).因此我们使用周围的引号来检测空参数.
jwd*_*jwd 19
环绕你%1的东西.
例如:
if not "%1" == ""
Run Code Online (Sandbox Code Playgroud)
我经常看到的另一个:
if not {%1} == {}
Run Code Online (Sandbox Code Playgroud)
等等...
正如你可能猜到的那样,问题在于它%1实际上被空虚所取代.它不是"空字符串",它实际上是源文件中的空白点.
然后在替换之后,解释器尝试解析if语句并使其混淆.
小智 12
您必须执行以下操作:
if "%1" == "" (
echo The variable is empty
) ELSE (
echo The variable contains %1
)
Run Code Online (Sandbox Code Playgroud)
小智 8
另一个相关提示是使用"%~1"而不是"%1".输入"CALL /?" 在Windows的命令行中获取更多详细信息.
| 归档时间: |
|
| 查看次数: |
184506 次 |
| 最近记录: |