[英]Check if a command-line argument is a drive using IF
我看到一个Windows批处理文件如下:
..
::Handle the case where the install dir is specified as a drive
if not "%1" == "" if /I "%1" == "%~d1" set INSTALL_DIR=%~d1
..
问题1:我从未看到像这样一起使用两个IF语句。 它是否像AND一样,即(persudo code:((“%1”!=“”)和(%1 ==“%~d1”))?
问题2:似乎只有在%1是驱动器时它才会设置INSTALL_DIR。 但是,以下单一检查已经不够了吗?
if /I "%1" == "%~d1" set INSTALL_DIR=%~d1
2 if
一起使用的事实并没有真正发挥很大的作用,只是如果第一个成功运行的命令是另一个if
语句。
是的,2 if
具有与AND
逻辑相同的功能。
单一检查似乎已经足够了,但前提是它们没有使用批处理执行特定的错误消息。
例如,如果没有给出参数,则可能需要显式检查,并给出一条错误消息,指出没有参数。 然后,如果有一个,并且它不是驱动器,请为此提供另一条错误消息。
希望这可以帮助。
问题1 :您可能会发现像这样更容易进行IF嵌套(为了便于阅读)。
..
::Handle the case where the install dir is specified as a drive
if not "%1" == "" (
if /I "%1" == "%~d1" (
set INSTALL_DIR=%~d1
)
)
..
这也允许您在“if”实例中嵌套多个命令。 例如:
..
::Handle the case where the install dir is specified as a drive
if not "%1" == "" (
echo Parameter 1 is not empty
if /I "%1" == "%~d1" (
echo Parameter 1 is a drive so setting the variable
set INSTALL_DIR=%~d1
)
)
..
问题2 :在您的示例中,测试确实有效地要求参数为驱动器或路径(带驱动器),并将参数过滤到驱动器中。
够了吗? 这取决于您是否需要进行额外检查,例如:
如果您的检查已经足够,那么您需要的代码是多么强大,以及您对%1中使用的内容有多少控制权。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.