我正在尝试创建一个将文件上传到FTP服务器的批处理文件。一切正常,除了一个特定的文件夹,其名称中有突变/元音(不能改变它.Aka文件夹名称里面有ö
。)。
我的问题是:实现这个目的有哪些选择?
ftp
批处理文件(UTF-8编码)的示例:
cd C:\uplaodfiles\ländle\*
ftp -n -s:C:\test\UploadTest.ftp
加载文件的示例:
open meimei
user meiuser meipassword
pasv
bin
cd uploaddir
prompt
mput c:\uploadfiles\ländle\*
close
bye
这一切都有效,直到mput
ftp
尝试将ä
转换为本地驱动器自然找不到的特殊字符。
另外需要注意:我开始在命令行的c:\test
文件夹中,因为UploadTest.bat
文件位于那里.....即使我使用cd
。因此,如果我使用不带参数的mput
(或者仅使用*
),那么它仍然会复制c:\test
。
编辑:
跑步的输出(我切掉了非重要的部分...... pasv
失败顺便说一句。不知道为什么?之前已经展示了它,所以我要离开那部分了。)
ftp> BIN
200 Command okay.
ftp> cd uploaddir
250 CWD command successful.
ftp> prompt
Interaktivmodus AUS . <-- interactive mode off
ftp> mput C:\L├ñndle\* <-- should be Ländle
C:\Ländle\*:Datei nicht gefunden <-- file not found
ftp> close
221 Service closing control connection.
ftp> bye
有点用德语,我在必要时使用&lt; -
进行翻译答案 0 :(得分:2)
只要UploadTest.ftp
是
似乎不支持批处理文件中的UTF-8(在Windows 7和Windows 10中都支持)。所以你不能在那里cd
(除非在默认的旧ANSI编码中)。
如果您需要适用于Windows 7的UTF-8解决方案,则可能必须使用其他FTP客户端。
批处理文件:
winscp.com /log=UploadTest.log /script=UploadTest.ftp
使用BOM:
以UTF-8编码上传脚本(UploadTest.ftp
)
open ftp://meiuser:meipassword@meimei/
cd uploaddir
put c:\uploadfiles\ländle\*
exit
请参阅Converting Windows FTP script to WinSCP script指南。
(我是WinSCP的作者)
答案 1 :(得分:0)
也许Microsoft已更新ftp.exe?但是我的经历与@Martin Prikryl的经历有些不同:
经过ä,ö,ü和characters字符测试。
编辑1: UTF-8的替代方法是使用机器的ANSI代码页(ACP)而不是OEM代码页(OEMCP)编码的ASCII文件。
编辑2:如果要使用ftp.exe进程的stdout,则stdout的编码必须为带OEM代码页的ASCII(仅在Windows 10下测试)!多么典型的MS混乱!