繁体   English   中英

检查命令行参数是否是使用IF的驱动器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM