Windowsbatch file:如果其他
我正在做一个简单的batch file,需要一个参数(你可以提供更多,但我忽略它们)。
为了testing,这是我迄今为止。
if not %1 == "" ( dir /s/b %1 ) else ( echo no )
基本上,我想说如果提供了一个参数,recursion地显示文件夹中的所有文件。 否则,说不。
它提供了一个论点,但如果我不提供一个它会告诉我( was unexpected at this time
。
我的意思是,它的工作,但我想至less显示一个用户友好的信息,解释为什么它不工作。 我应该如何更改代码?
if not %1 == "" (
一定是
if not "%1" == "" (
如果没有给出一个参数,它是完全空的,甚至不是""
(在大多数编程语言中表示一个空string)。 所以我们用周围的引号来检测一个空的参数。
围绕你的%1
的东西。
例如:
if not "%1" == ""
另一个我经常见到的:
if not {%1} == {}
等等…
正如你可能猜到的那样,问题在于%1
被空虚所替代。 这不是一个“空string”,它实际上是源文件中的一个空白处。
然后在replace之后,解释器试图parsingif
语句并且感到困惑。
你必须做到以下几点:
if "%1" == "" ( echo The variable is empty ) ELSE ( echo The variable contains %1 )
另一个相关的提示是使用“%〜1”而不是“%1”。 input“CALL /?” 在Windows的命令行中获取更多细节。
另一种方法是设置一个variables,并检查它是否被定义:
SET ARG=%1 IF DEFINED ARG (echo "It is defined: %1") ELSE (echo "%%1 is not defined")
不幸的是,使用DEFINED
直接使用%1
不起作用。
你必须这样做…
如果不是“A%1”==“A”
如果input参数%1为空,那么你的代码将会有问题。