2009-11-27 35 views
2

我试图用分号前缀行,“REM”等。但无论怎样,当我跑我的批处理文件,我不断收到愚蠢的批处理文件行为。试图执行意见

+1

也许有些代码? – Joey 2009-11-27 08:29:27

+2

请详细说明您的环境。 'REM'被Windows XP命令行界面(cmd)识别,但显然你使用的是不同的东西。 – 2009-11-27 08:30:31

+0

没有太多的代码要给。 “REM测试” 不被认可,是windows vista。我只需将“rem”输出回到我的控制台。 如果我把“::测试”并执行它,我回到“测试”。 如果我把“;测试”递归执行自己 – 2009-11-28 15:14:41

回答

5

“REM测试”它不被认可,它是Windows Vista。我只需将“rem”输出回到我的控制台。

这是完全正常的行为。批处理文件只是一个接一个地运行的命令序列。所以每行都会输出到控制台,就好像它在那里输入一样。

H:\>echo rem test > test.cmd 

H:\>test 

产生输出

H:\>rem test 

仿佛我输入rem test直接到控制台。通过包括echo off批处理文件

@rem test 

或::如果我把 “::测试”

@echo off 
rem test 

您可以通过添加前缀符合@抑制这种执行它我回来“测试”。

此处不能复制。

如果我把“测试”,它递归执行本身

在该行的开始似乎被忽略了一个分号。

+0

不,它是cmd.exe – 2009-11-28 15:12:35

+0

就是这样!听起来也很熟悉。 – 2009-11-30 08:53:11

4

如果你在谈论“什么未知的命令REM” Windows下cmd.exe批处理文件,你可以使用:

rem this method or 
:: this method. 

对于bash和许多其他UNIX型壳,你使用:

# this method. 

我你不使用某些漂亮cmd.exe因为这将让你像一个错误:

'rem' is not recognized as an internal or external command, 
operable program or batch file. 

而不是:

Unknown command ... 

如果你使用UNIX型外壳,#人物几乎可以肯定是你追求。如果你让我们知道你正在使用的shell,我们可以进一步提供帮助。

+1

请记住,'::'有时会在块内产生意想不到的结果。我看到了有关未知驱动器的奇怪的错误消息,但无法在最新版本的Windows上重新创建它们。 – Joey 2009-11-27 08:33:39

+0

我还没有看到任何问题,但后来我不写*巨大的*批处理文件。他们大多倾向于在块之前发表评论以解释发生了什么,并且在将块的内容重构为调用语句之前,我的块没有变大。 – paxdiablo 2009-11-27 09:28:03

+0

它的cmd.exe,标准的windows shell。 我把“REM测试”(不带引号)放到一个名为test.bat的文件中,导航到它并输入“test”,然后按回车键(在cmd.exe中),我将REM输出到我的控制台,没有别的。 – 2009-11-28 15:13:24

1

你可能创建了一个UNICODE文件。这些文件包含名为BOM 的2字节标题,它不会被任何编辑器显示,但cmd会尝试执行它们并失败。

为了确保这的确是一个问题:在你文件的最开始 键入任何其他命令,看看它抛出了同样的错误 - 例如@echo测试

要解决它,只需创建一个新的纯文本文件和复制原始文件的内容。 然后删除原始文件并将其替换为新创建的文件。