2011-10-12 9 views
5

Ho uno strano problema durante il tentativo di modificare la codepage in un file .bat.Modifica della codepage nel file .bat (Win7 vs Win Vista)

Quando eseguo il seguente file .bat in Windows 7, viene eseguito correttamente.

La codepage viene modificata e program.exe viene eseguito.

Il file batch:

chcp 65001 

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

pause 

Tuttavia quando avvio il file .bat da Windows Vista la tabella codici viene cambiato e dopo che il file batch si esce.

Quindi program.exe non viene mai eseguito.
Tuttavia quando eseguo manualmente i due comandi dalla riga di comando funziona.

Qualche idea su come ottenere questo funzionamento con Windows Vista dal file .bat?

risposta

0

Ho trovato una soluzione (molto sporca) che funziona per me.

A quanto pare, non è possibile ciò che voglio fare.

Quello che ho fatto per farlo funzionare è la seguente:

  • Invece di cercare di creare un batchfile creo un file txt (con lo stesso contenuto del batchfile).
  • Ho scritto un programma C# molto semplice che legge il file .txt ed esegue il contenuto.

Come ho detto è piuttosto sporco ma funziona per me.

Se vengono aggiunte altre risposte, ci proverò anche quelle.

1

E 'nuovo per me che questo funziona con Win7, in Vista e XP è normale che i file batch non sono funzionano se la tabella di codici viene modificato 65001.

Ma è possibile utilizzare un workaraound

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

Questo funziona, poiché il blocco completo viene memorizzato nella cache mentre la codepage viene modificata.

Nel tuo caso (con dieresi tedesco) si potrebbe meglio utilizzare la tabella di codici 1252

chcp 1252 
echo ÄÖÜß 
+0

Non funziona. Sembra che la codepage non sia stata modificata (ancora) quando viene eseguito il comando ('program.exe'). :( – PeeHaa

+0

Ho anche provato l'oneliner: '( chcp 65001 &&" D: \ program.exe "/ opt ÄiÜ && chcp 850 )' senza fortuna – PeeHaa

+0

Fallisce mentre provate ad accedere direttamente alle dieresi. Funziona con i file. Ho modificato la mia risposta – jeb

0

Avete controllato codice di ritorno di chcp (chcp 65001 & echo %ERRORLEVEL%)?

Ad ogni modo, prova chcp 65001 & "D:\program.exe" /opt ÄiÜ & chcp 850.

0

A meno brutta soluzione, lo uso quando ho bisogno di usare nomi di file con caratteri speciali come parametri nei file batch:

  1. diretto l'output del comando dir in un file txt (dir c: \ foldername> diroutput.txt)
  2. Apri diroutput.txt nel blocco note, trova e copia negli appunti il ​​nome del file con caratteri speciali (apparirà spazzatura, ma è ok)
  3. Incollare il nome file nel file batch aperto nel blocco note.

Se si digita il contenuto del batchfile nella finestra "dos" (tipo batchfilename.bat), il nome file è corretto. (Sembrerà anche corretto in Totalcommander costruito in fileviewer, ma apparirà spazzatura nel blocco note)

Problemi correlati