Batch file 上载带有UTF-8文件名问题的文件
我想上传我的文件到FTP服务器使用与Windows conmand提示。如果文件名不包含UTF-8字符,则工作正常。但如果它包含UTF-8字符,则不会上载到FTP服务。 我的test.bat:Batch file 上载带有UTF-8文件名问题的文件,batch-file,utf-8,cmd,Batch File,Utf 8,Cmd,我想上传我的文件到FTP服务器使用与Windows conmand提示。如果文件名不包含UTF-8字符,则工作正常。但如果它包含UTF-8字符,则不会上载到FTP服务。 我的test.bat: @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 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
输出:
220---------- Welcome to Pure-FTPd [privsep] [TLS] ----------
220-You are user number 456 of 1900 allowed.
220-Local time is now 20:57. Server port: 21.
220-This is a private system - No anonymous login
220 You will be disconnected after 60 seconds of inactivity.
ftp> user b12_17312633
331 User b12_17312633 OK. Password required
230 OK. Current restricted directory is /
ftp> bin
200 TYPE is now 8-bit binary
ftp> cd htdocs
250 OK. Current directory is /htdocs
ftp> put "C:\Users\user\Desktop\FTP\çtü.txt"
C:\Users\user\Desktop\FTP\çtü.txt: File not foundftp> bye
221-Goodbye. You uploaded 0 and downloaded 0 kbytes.
221 Logout.
我在“çtü.txt”上试用了一下。
注意:我是在Windows命令提示符下完成的
指定包含-s:
命令的文本文件。这些命令在ftp启动后自动运行。此参数ftp
不允许有空格。使用此参数而不是重定向(您使用的是哪个FTP客户端?抱歉,我是初学者。我不太了解您。我的FTP服务器纯FTPd。我使用CMD连接FTP服务器。没关系。非ASCII文件名要求服务器和客户端支持UTF-8文件名模式(RFC 264)。纯FTP服务器提供,但由于Windows多年来没有提供命令行FTP客户端,我怀疑您的客户端是否提供。您可能有幸使用ncftp、Cygwin的FTP客户端,或者可能使用完全不同的协议,如SFTP。嗯,那么我将使用另一个FTP客户端。感谢提供的信息:)请查看我的更新答案。现在应该可以了。问题不在于文件内容。它位于文件名处。另外,我的文件已经使用UTF-8,没有BOM。@RecepSelimAğ305; rman您尝试过我的解决方案吗,您应该会看到一个文件
上传,您的脚本按照我的建议进行了改进……是的,我现在尝试了。你说得对。我看到了tçtü.txt。那么,现在我如何得到我想要的结果呢?我的意思是,它在我的计算机上不工作。请仔细检查tçtü.txt
文件,并使用十六进制查看器/编辑器检查utf8bom.txt
是否包含UTF-8 BOM。注意%TMP%\ab.dat
回送用户b12\U 17312633>>%TMP%\ab.dat中的重定向器。或者尝试命令行>
,然后chcp 437
它应该返回type%TMP%\ab.dat
∩╗┐用户b12\U 17312633在第一行显示:
C:\Users\user>chcp 437 Etkin kod sayfasi:437 C:\Users\user>type%TMP%\ab.dat用户b12\U 17312633 123456ab二进制cd htdocs put“C:\Users\user\Desktop\Recep Selim\FTP\testttt.txt”put“C:\Users\user\Desktop\Recep Selim\FTP\utf8.txt”put“C:\Users\user\Desktop\Recep Selim\FTP”\├ºt├╝.txt“再见退出C:\Users\user>
@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