2009-11-27 39 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測試

要解決它,只需創建一個新的純文本文件和複製原始文件的內容。 然後刪除原始文件並將其替換爲新創建的文件。