[英]FTP files from folders that have international characters/mutations/vowels (ä. ö. ü) with Windows FTP in batch-file
我正在尝试创建一个将文件上传到 FTP 服务器的批处理文件。 除了一个特定文件夹的名称中包含突变/元音外,一切正常(无法更改。也就是文件夹名称里面有一个ö
。)。
我的问题是:有哪些选择可以实现这一目标?
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
了不重要的部分……顺便说一句, 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
由于其中有一部分是德语,因此我在必要时使用 <-- 进行了翻译
它可以工作,只要UploadTest.ftp
是
批处理文件中的 UTF-8 似乎不受支持(在 Windows 7 和 Windows 10 中)。 所以你不能在那里做cd
(除非在默认的传统 ANSI 编码中)。
如果您需要适用于 Windows 7 的 UTF-8 解决方案,您可能必须使用另一个 FTP 客户端。
例如使用WinSCP 脚本:
批处理文件:
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
请参阅将 Windows FTP 脚本转换为 WinSCP 脚本的指南。
(我是 WinSCP 的作者)
也许微软已经更新了 ftp.exe? 但我的经历与@Martin Prikryl 的经历有些不同:
使用字符 ä、ö、ü 和 ᚠ 进行测试。
编辑 1: UTF-8 的替代方案是使用机器的 ANSI 代码页 (ACP) 但不是 OEM 代码页 (OEMCP) 编码的 ASCII 文件。
编辑 2:如果您想使用 ftp.exe 进程的标准输出,标准输出的编码必须是带有 OEM 代码页的 ASCII(仅在 Windows 10 下测试)! 多么典型的 MS 混乱!
我有同样的问题。 我的批处理文件由 VBScript 生成,并以 UTF-8 编码。 解决方案是将文件转换为 ANSI。 您可以尝试转换您的批次和 testint。 如果有效,您可以使用https://www.vbsedit.com/scripts/misc/text/utf8_ansi.asp 中的代码
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.