2011-11-30 135 views
2

我從Windows Vista中的.bat文件運行GNU的iconv(抱歉!)Windows腳本編寫的iconv參數

"C:\Program Files\GnuWin32\bin\iconv.exe" -f ISO-8859-1 -t UTF-8 "%1" > "%1" 

如果我打電話

> batch.bat "S:\gutschein_info.php" 

它執行爲

> "C:\Program Files\GnuWin32\bin\iconv.exe" -f ISO-8859-1 -t UTF-8 
    "S:\gutschein_info.php" 1> "S:\gutschein_info.php" 

然後gutschein_info.php爲空。 「1>」來自哪裏?爲什麼它不起作用?

BTW:最後,我想轉換整個文件夾:

FOR %%i IN (%1*) DO "C:\Program Files\GnuWin32\bin\iconv.exe" -f ISO-8859-1 -t UTF-8 %%i > %%i 

回答

2

的iconv不工作。所以iconv ... %1 > %1 ist空,但iconv ... %1 > utf8/%1的作品。我的腳本:

cd "S:\gutscheine" 
S: 
mkdir utf8 
FOR %%i IN (*) DO "C:\Program Files\GnuWin32\bin\iconv.exe" -f ISO-8859-1 -t UTF-8 %%i > utf8/%%i 
C: 
1

的 「1>」 是 「>」 的代名詞。在這兩種情況下,iconv.exe的STDOUT將被重定向到「%1」或「S:\ gutschein_info.php」。

基本上,Windows命令行解釋器通過解釋器在批處理文件中運行命令,並試圖將它們轉換爲有效的命令。 「>」字符實際上是「1>」的快捷鍵,它將命令的STDOUT重定向。

STDERR存在類似的重定向,它使用2而不是1.因此,重定向STDERR將使用「2>」。你甚至可以做一些奇特的步法,並將STDOUT和STDERR都重定向到一個文件。如果輸入文件是一樣的輸出文件

"C:\Program Files\GnuWin32\bin\iconv.exe" -f ISO-8859-1 -t UTF-8 "%1" 1> "%1" 2>&1