29

我已经从我正在创建的 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

我无法理解我做错了什么,但是如果我打开命令提示符并从那里运行它,它会运行一次。

任何帮助将不胜感激!

谢谢

4

3 回答 3

78

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

例子:

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

双击文件,它将继续循环。

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

于 2016-07-18T10:14:26.497 回答
8

确保:

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

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

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

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

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

于 2018-02-12T15:30:37.073 回答
4

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

  1. 文件名和命令名不应该相同,否则它将永远循环。
  2. 该目录中不应有与命令名称同名的文件。
于 2020-01-20T06:03:52.217 回答