我正在尝试创建一个将文件上传到 FTP 服务器的批处理文件。一切正常,除了一个特定文件夹的名称中包含突变/元音(无法更改。也就是文件夹名称有一个ö内部。)。
我的问题是:有哪些选择可以实现这一目标?
ftp批处理文件示例(UTF-8 编码):
cd C:\uplaodfiles\ländle\*
ftp -n -s:C:\test\UploadTest.ftp
Run Code Online (Sandbox Code Playgroud)
加载文件示例:
open meimei
user meiuser meipassword
pasv
bin
cd uploaddir
prompt
mput c:\uploadfiles\ländle\*
close
bye
Run Code Online (Sandbox Code Playgroud)
它所有的工作,直到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
Run Code Online (Sandbox Code Playgroud)
由于其中有一部分是德语,因此我在必要时使用 <-- 进行了翻译
它有效,只要UploadTest.ftp是
批处理文件中的 UTF-8 似乎不受支持(在 Windows 7 和 Windows 10 中)。所以你不能在那里做cd(除非使用默认的旧 ANSI 编码)。
如果您需要适用于 Windows 7 的 UTF-8 解决方案,您可能必须使用另一个 FTP 客户端。
\n\n例如使用WinSCP 脚本:
\n\n批处理文件:
\n\nwinscp.com /log=UploadTest.log /script=UploadTest.ftp\nRun Code Online (Sandbox Code Playgroud)UploadTest.ftp上传带有 BOM 的 UTF-8 编码的脚本 ( ):
open ftp://meiuser:meipassword@meimei/\ncd uploaddir\nput c:\\uploadfiles\\l\xc3\xa4ndle\\*\nexit\nRun Code Online (Sandbox Code Playgroud)请参阅将 Windows FTP 脚本转换为 WinSCP 脚本的指南。
\n\n(我是WinSCP的作者)
\n