【问题标题】:My Batch File keeps looping, but why?我的批处理文件不断循环,但为什么?
【发布时间】:2021-05-03 11:44:37
【问题描述】:

我已经从我正在创建的 VB.NET 程序中编写了一个批处理文件。

当我在 Windows XP 中双击该文件时,它会弹出一个命令提示符,并且似乎在一遍又一遍地运行。

我的批处理文件如下

REG ADD "HKCU\Software\Classes\*\shell\Open Folder In Rename" /ve /t REG_SZ  /d "Open With Rename" /f
REG ADD "HKCU\Software\Classes\*\shell\Open Folder In Rename\Command" /ve /t REG_SZ  /d "P:\Misc\Rename v2.0\Rename v2.0\bin\Debug\Rename v2.0.exe ""%1""" /f
EXIT

我不明白我做错了什么,但如果我打开命令提示符并从那里运行它,它会运行一次。

任何帮助将不胜感激!

谢谢

【问题讨论】:

  • 你看到任何输出了吗?
  • 是的,它只是不断重复以下操作,直到我按 Ctrl+CP:\Misc\Rename v2.0\Rename v2.0\bin\Debug>REG ADD "HKCU\Software\Classes*\shell \Open Folder In Rename" /ve /t REG_SZ /d "Open With Rename" /f 它也不添加注册表项
  • 删除EXIT 命令。再次检查结果。
  • 我猜:你的文件名是REG.bat?
  • jeb 回答了您的问题。您正在尝试通过 PATH 变量执行 REG.EXE,但您的批处理正在从当前目录执行自身。所以,是的,更改批处理脚本的名称。

标签: batch-file


【解决方案1】:

在 windows 命令行中,如果您想执行一个命令或一组命令,那么我们通常将这些命令放入 .bat 文件中以便在任何时间点执行它们,但在执行之前我们必须遵循一些准则。

  1. 文件名和命令名不能相同,否则会永远循环。
  2. 该目录中不应有与命令名称相同的文件。

【讨论】:

    【解决方案2】:

    确保:

    1. 您的脚本名称不像内置命令或程序

    2. 确保您的脚本调用的脚本没有像内置命令或程序那样命名

    例如如果您的脚本被调用:调用shutdown -t 10 -r的reeeeeboooot.bat,但在同一个文件夹中驻留shutdown.cmd

    reeeeeboooot.bat 实际上会调用内置命令的shutdown.cmd INSTEAD。

    有时最简单的事情是最难的。 (实际上经常:-D)

    【讨论】:

      【解决方案3】:

      在 windows 中,如果你有一个与你的 bat 文件名同名的命令行可执行文件,并且批处理文件包含此命令,批处理文件会一直循环。

      例子:

      • 在您的桌面上创建文件net.bat
      • 在您的文件中写入以下文本:net

      双击文件,它会一直循环播放。

      此行为的原因是命令的执行顺序。您要执行的命令位于路径中的文件夹之一中。但是批处理文件在您当前的文件夹中,因此它会首先执行,从而导致循环。

      【讨论】:

      • 在 Windows 7 中,情况似乎并非如此。在 Windows 10 中使用相同的脚本,我遇到了循环问题。这可能是 Windows 10 的一项功能。
      • 刚刚在 Windows 7 和 Windows 8 中尝试过,循环问题就在那里。
      • 在 Linux 上,这被认为是一种安全风险。要从当前目录运行文件,您必须在文件名前专门添加./,或者将当前目录. 添加到PATH。那么为什么 Windows 默认启用它呢?
      • 谁会猜到! :-D
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-21
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多