【问题标题】:Works in Command Prompt but not in BAT-file or CMD-file [duplicate]适用于命令提示符但不适用于 BAT 文件或 CMD 文件 [重复]
【发布时间】:2018-05-25 13:18:00
【问题描述】:

由于 WINDOWS DEFENDER 的问题,我需要执行以下操作:

for /r "%appdata%\..\Local\MyProg\2.0" %D IN ("*MyProgram.exe") DO "%~fD

它在 COMMAND PROMPT 中完美运行,但在批处理文件或 cmd 文件中却无法运行 - 为什么?

如何将可执行文件制作为批处理文件或“.cmd”?

【问题讨论】:

  • 根据for/?的帮助页面:分别写%%D%%~fD而不是%D%~fD
  • 今天第二个没有阅读FOR命令帮助文件前8行的人。
  • 好吧,这个脚本是一个朋友写的,他不能让它工作。我给了他一些意见,我们尝试了不同的版本。我认为问题与管理员权限、 "' 或命令行输入中的 * 和 "%appdata% 问题有关。由于我没有编写脚本(包括 FOR 循环),所以我完全错过了。我们尝试使用 double % 但我们一定错过了第二个 %...我在 for /? 中没有看到任何关于批处理文件中的 double %% 的内容...但是吸取的教训 - 不要确定任何东西 -仔细检查一切!

标签: batch-file cmd command


【解决方案1】:

在批处理文件中运行for 循环时,您需要在预定义变量中使用额外的%。所以应该是:

for /r "%appdata%\..\Local\MyProg\2.0" %%D IN ("*MyProgram.exe") DO "%%~fD

我建议您通过从 cmdline 运行 for /? 来阅读文档齐全的帮助。您一定会从中受益,保证!

【讨论】:

    【解决方案2】:

    递归For 循环已经返回完整路径,另外已经有一个用于路径%AppData%\..\Local 的系统变量。

    For /R "%LocalAppData%\MyProg\2.0" %%A In ("*MyProgram.exe") Do "%%A"
    

    根据您的需要,可能值得检查一下Start 命令的用法,Start /?。您可能会发现 Do Start "" "%%A" 正是您所需要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-27
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多