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

时间:2015-10-08 06:37:11

标签: batch-file ftp

我正在尝试创建一个将文件上传到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; -

进行翻译

2 个答案:

答案 0 :(得分:2)

只要UploadTest.ftp

,它就可以
  • 采用UTF-8编码(有或没有BOM) - 仅限Windows 10(没有测试Windows 8)
  • 在ANSI编码中与Windows &#34;非Unicode程序的语言&#34; 和文件名中的字符包含在ANSI编码中 - Windows 7和10

似乎不支持批处理文件中的UTF-8(在Windows 7和Windows 10中都支持)。所以你不能在那里cd(除非在默认的旧ANSI编码中)。

如果您需要适用于Windows 7的UTF-8解决方案,则可能必须使用其他FTP客户端。

例如WinSCP scripting

  • 批处理文件:

    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的经历有些不同:

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

经过ä,ö,ü和characters字符测试。

编辑1: UTF-8的替代方法是使用机器的ANSI代码页(ACP)而不是OEM代码页(OEMCP)编码的ASCII文件。

编辑2:如果要使用ftp.exe进程的stdout,则stdout的编码必须为带OEM代码页的ASCII(仅在Windows 10下测试)!多么典型的MS混乱!