Windows脚本iconv参数

Windows脚本iconv参数,windows,scripting,iconv,Windows,Scripting,Iconv,我正在Windows Vista中的.bat文件中运行Gnu iconv(很抱歉!) 如果我打电话 > 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>

我正在Windows Vista中的.bat文件中运行Gnu iconv(很抱歉!)

如果我打电话

> 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>来自哪里?为什么它不起作用

顺便说一句:最后,我想转换一个完整的文件夹:

FOR %%i IN (%1*) DO "C:\Program Files\GnuWin32\bin\iconv.exe" -f ISO-8859-1 -t UTF-8 %%i > %%i
“1>”与“>”同义。在这两种情况下,iconv.exe中的标准输出都将重定向到“%1”或“S:\gutschein_info.php”

基本上,Windows命令Shell通过解释器运行批处理文件中的命令,并试图将它们转换为有效的命令。“>”字符实际上是“1>”的快捷方式,它从命令重定向标准输出

对于使用2而不是1的STDERR,也存在类似的重定向。因此,重定向STDERR将使用“2>”。您甚至可以做一些奇特的步法,将STDOUT和STDERR重定向到一个文件

"C:\Program Files\GnuWin32\bin\iconv.exe" -f ISO-8859-1 -t UTF-8 "%1" 1> "%1" 2>&1
如果输入文件与输出文件相同,iconv将不工作。所以
iconv…%1>%1
为空,但
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:
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: