我希望使用Windows conmand提示将我的文件上传到FTP服务器。如果文件名不包含UTF-8字符,它可以正常工作。但如果它包含UTF-8字符而不上传到FTP服务。 我的test.bat:
<table>
输出:
@echo off
chcp 65001
echo >> %TMP%\ab.dat
echo user b12_17312633> %TMP%\ab.dat
echo 123456ab>> %TMP%\ab.dat
echo bin>> %TMP%\ab.dat
echo cd htdocs>> %TMP%\ab.dat
for /R %1 %%f in (*.txt) do (
echo put "%%f">> %TMP%\ab.dat
)
echo bye>> %TMP%\ab.dat
echo quit>> %TMP%\ab.dat
ftp -n -s:%TMP%\ab.dat ftp.byethost12.com
pause
我在“çtü.txt”上试了一下进行测试。 注意:我在Windows命令提示符下使用它。
答案 0 :(得分:0)
-s:<FileName>
指定包含ftp
命令的文本文件。这些命令在ftp启动后自动运行。这个参数 不允许空格。使用此参数而不是重定向(&lt;)。- 注意即可。在Windows 8和Windows Server 2012或更高版本的操作系统中,文本文件必须以
编写UTF-8
。
FTP
documentation 隐藏此文本文件必须使用BOM (字节顺序标记)写入UTF-8
,但根据Unicode标准, BOM for UTF-8
files is not recommended。
我将使用您的test.bat
脚本的下一个改进:
@echo off
chcp 65001
powershell -command [System.IO.File]::WriteAllBytes("'%TMP%\ab.dat'", (0xEF,0xBB,0xBF))
echo user b12_17312633>> %TMP%\ab.dat
rem … the script continues here
其中powershell
调用使用UTF-8
BOM创建ab.dat
文件,即使用初始/前导字节序列0xEF
,0xBB
,0xBF
。