【问题标题】:Simple wildcard use简单的通配符使用
【发布时间】:2013-07-03 01:22:49
【问题描述】:

编辑:我刚刚将 if 更改为 if else

IF "%CD:~1%"==":\" ( set FIR=%CD:~0,2% ) ELSE ( set FIR=%CD% )

尝试使用通配符来检测批处理文件是否在根目录上(作为根目录导致DIR末尾有反斜杠)

我需要用一个简单的 if 语句来确定它是否是 *:\。我曾尝试使用通配符 *:\ 和 ?:\ 但无济于事。如果我使用驱动器号,例如:G:\ 就可以了。

if %CD%==G:\ echo SOMETHING WRONG HERE

工作得很好,直到驱动器号发生变化。在哪里

if %CD%==?:\ echo SOMETHING WRONG HERE

if "%CD%"=="?:\" echo SOMETHING WRONG HERE

没用。

编辑:阅读后发现和通配符不兼容!

【问题讨论】:

  • 通配符 IF 不支持通配符,因此 %COMPUTERNAME%==SS6* 将不匹配 SS64 解决方法是检索子字符串并仅比较这些字符:SET _prefix=%COMPUTERNAME:~0, 3% IF %_prefix%==SS6 GOTO they_matched

标签: variables batch-file wildcard dir


【解决方案1】:

试试这个:

if "%CD:~-2%"==":\" (echo root) else echo NOT root

参见文档help set

【讨论】:

  • 这可能更准确if "%cd:~-2%"==":\" echo is root
  • @foxidrive 你在想什么情况?
  • 如果使用的路径是 c:\abc\ 那么您的代码也将返回它是根。根据我的建议,它将返回它不是根。这可能是一个有争议的问题,因为 %cd% 将返回 d:\abc 并且您的代码在所有情况下都可以正常工作。
  • @foxidrive 是的,如果您主动为cd 分配值。但尽管如此,它可能更安全。
  • @Foxdrive 实际上我的脚本稍后会写入目录 /abc/Icon 本身。因此,当从 root 运行时,它会写入 C:\\abc\Icon else %CD% 确实可以正常工作。
【解决方案2】:

在命令中的 IF 语句中不能使用通配符。

【讨论】:

    猜你喜欢
    • 2013-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-30
    • 2018-12-15
    • 1970-01-01
    • 2012-01-30
    相关资源
    最近更新 更多