繁体   English   中英

来自具有国际字符/突变/元音 (ä. ö. ü) 文件夹的 FTP 文件与 Windows FTP 批处理文件

[英]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

这一切工作,直到mputftp尝试将转换ä为特殊字符的本地驱动器自然没有找到。

作为附加说明:我从命令行上的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 编码(带或不带 BOM) – 仅限 Windows 10(未测试 Windows 8)
  • 在 ANSI 编码中匹配 Windows “非 Unicode 程序的语言”并且文件名中的字符包含在 ANSI 编码中 – Windows 7 和 10

批处理文件中的 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 的经历有些不同:

  • Windows 10 (1903):UploadTest.ftp 可以是 UTF-8 编码,有或没有 BOM
  • Windows 7:UploadTest.ftp 可以是 UTF-8 编码, BOM 不能存在
  • Windows XP (!):UploadTest.ftp 可以是 UTF-8 编码, BOM 不能存在

使用字符 ä、ö、ü 和 ᚠ 进行测试。

编辑 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM