【问题标题】:Windows batch file If/Else Start syntax?Windows 批处理文件 If/Else Start 语法?
【发布时间】:2014-10-23 01:03:39
【问题描述】:

我需要制作一个 Windows 批处理文件:

  • 1.- 检查目录名称和“如果”它存在, a.- 从不同的目录运行指定的 *.exe。

  • 2.- 或“其他” a.- 重命名目录以及 b.- 重命名另一个目录 - 然后 c.- 从创建的目录运行 *.exe。

问题是:我在创建此批处理文件时坚持使用正确的语法(我想)。这就是我所拥有的,(也许嵌套的 if/Else 会更好?)有人请赐教...谢谢。

@echo off
IF EXIST "C:\Test\Dir1" (
START "C:\Test\Dir\Test.exe"
) ELSE ( ren "C:\Test\Dir" "C:\Test\Dir1"
         ren "C:\Test\Dir2" "C:\Test\Dir"
         START "C:\Test\Dir\Test.exe"
)

【问题讨论】:

  • 您看到的问题是什么?代码对我来说看起来不错,除了 TRUE 块使用 START,而 FALSE 块没有。这似乎很奇怪。
  • 谢谢。我更新了 False 语句中缺少的 START,但是......它不会在 TRUE 或 FALSE 语句中运行 Test.exe。我手动更改了 Dir1 或 Dir2 以使每个都正常工作,只会给我留下一个命令提示符: C:\Test>_ Test.exe 文件手动运行良好。有什么建议么?谢谢。
  • 编辑 - 我将问题回滚到以前的形式,路径位于 REN 目标中,以便接受的答案更有意义。

标签: windows batch-file if-statement syntax


【解决方案1】:

您不能在ren 中使用包含路径或驱动器的目标名称。

试试

ren "C:\Test\Dir2" "Dir"

start 有奇怪的语法 - ' 虽然在这种情况下它似乎不是问题。第一个“引用的参数”字符串成为窗口标题,可执行文件通常可以忽略。尝试 经常使用

start "window title that can be empty if you like" "executablename" argument list

即使这可能不完全符合记录的行为。

(将问题简化为一般性也会掩盖真正的原因)

【讨论】:

  • 感谢您的快速回复。我确实重写了你的准确观察,但它仍然没有运行 Test.exe。它仍然只留下命令提示符: C:\Test>_ (这是我拥有批处理文件的位置,如果我将批处理文件的位置更改为 C:\ 这是命令提示符窗口结束的位置)。我不确定我是否理解您对 START 语法的理解。由于文件夹的名称将发生变化,它将如何找到要执行的文件的正确位置?您能否使用我发布的内容发布示例?再次感谢。
【解决方案2】:

感谢 dbenham 和 Magoo。您的回答在看似很简单的事情上大有不同。它现在正在工作,因为你们提到的所有更改都有帮助。最后的“棺材里的钉子”是理解 START 参数的语法。了解第一个参数有双引号并将其用作新窗口的可选 TITLE,ssoooo 给它一个空的双引号 ( "" ) 在程序名称之前给它一个空标题来伪造它。瞧……

非常感谢你们。最终工作批处理文件。

@echo off
IF EXIST "C:\Test\Dir1" (
START "" "C:\Test\Dir\Test.exe"
) ELSE ( ren "C:\Test\Dir" "Dir1"
         ren "C:\Test\Dir2" "Dir"
         START "" "C:\Test\Dir\Test.exe"
)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    相关资源
    最近更新 更多