2011-10-12 45 views
5

嘗試更改.bat文件中的代碼頁時出現奇怪的問題。更改.bat文件中的代碼頁(Win7 vs Win Vista)

當我在Windows 7中執行以下.bat文件時,它執行得很好。

代碼頁被更改,program.exe被執行。

批處理文件:

chcp 65001 

"D:\program.exe" /opt ÄiÜ 

pause 

然而,當我開始從Windows Vista .bat文件的代碼頁得到改變,並且該批處理文件退出後。

所以program.exe永遠不會被執行。
但是,當我從命令行手動運行這兩個命令它確實工作。

任何想法如何讓這個工作在Windows Vista從.bat文件?

回答

0

我發現了一個非常髒的解決方案,它適用於我。

由它的外觀它只是不可能我想要做的。

我做了什麼,使其工作如下:

  • 而不是試圖創建一個批處理文件創建一個.txt文件(具有相同內容的批處理文件)。
  • 我寫了一個非常簡單的C#程序,它讀取.txt文件並執行內容。

正如我所說,它很髒,但它適用於我。

如果在這裏添加其他答案,我也會嘗試這些。

1

這是新的,我認爲這部作品與Win7的,在Vista和XP這是正常的,如果代碼頁改爲65001

批處理文件不工作,但你可以使用一個workaraound

(
    chcp 65001 
    cmd /c type myFile.txt 
    chcp 850 
) 
echo the batch is still alive 

這是有效的,因爲在代碼頁被改變時完整的塊被緩存。

在你的情況(與德國變音),你可以更好地使用的代碼頁1252

chcp 1252 
echo ÄÖÜß 
+0

不起作用。當命令('program.exe')執行時,看起來代碼頁沒有改變(但)。 :( – PeeHaa

+0

也嘗試了oneliner:'( chcp 65001 &&「D:\ program.exe」/ optÄiÜ&& chcp 850 )'沒有運氣 – PeeHaa

+0

它嘗試直接訪問變音符號失敗,它與文件一起工作。我編輯了我的答案 – jeb

0

你檢查的chcpchcp 65001 & echo %ERRORLEVEL%)返回碼?

無論如何,請嘗試chcp 65001 & "D:\program.exe" /opt ÄiÜ & chcp 850

0

一個不太難看的解決方案,我使用它,當我需要使用特殊字符作爲參數的文件名中的批處理文件:

  1. 直接dir命令的輸出到一個txt文件(DIR C:\文件夾> diroutput.txt)
  2. 打開diroutput。txt在記事本中,找到並複製到剪貼板的文件名與特殊字符(它會看起來像垃圾,但沒關係)
  3. 將文件名粘貼到在記事本中打開的批處理文件。

如果你在「dos」窗口中輸入了批處理文件的內容(鍵入batchfilename.bat),你會看到文件名是正確的。 (在fileviewer中內置的totalcommander中看起來也是正確的,但是它會在記事本中看起來很垃圾)