【问题标题】:windows file output redirection issuewindows文件输出重定向问题
【发布时间】:2012-06-11 05:56:22
【问题描述】:

我正在尝试将 ftp 脚本的输出重定向到 txt 文件。我希望在文件末尾找到以下格式的 ftp 输出:

#this is a part of the complete output after running ftp script via perl
226 Transfer complete
ftp: 100000000 bytes sent in 14.81Seconds 6753.56Kbytes/sec.
ftp> bye

这是在命令提示符下运行命令时获得的。但是,当我将输出重定向到 txt 文件时,我得到以下信息:

226 Transfer complete
ftp: 100000000 bytes sent in Seconds Kbytes/sec.
ftp> 14.816753.56bye 

为了完整起见,我正在通过 perl 运行一个 ftp 脚本(使用 system("ftp -s:script.txt");)并在命令行上使用 '>' 获取其输出。有人可以解释一下出了什么问题。

谢谢

【问题讨论】:

  • 在命令提示符下,它是通过批处理文件工作还是从交互模式获取上述输出?
  • @Kevin 我只需给出命令:{ perl ftp_upload.pl > out.txt },其中包含命令:system("ftp -s:ftp_script.txt");

标签: windows perl ftp io-redirection


【解决方案1】:

我猜在 ftp 应用程序写入“ftp: 100000000 bytes sent in Seconds Kbytes/sec.”之后,它会将光标移回“Seconds”和“Kbytes/sec”之前。分别写“14.81”和“6753.56”。如果将输出重定向到文件,则光标移动 API 调用将不起作用,这些数字将附加到下一行的末尾。

(我从未见过 Windows ftp 应用程序的代码,但我在几年前编写的程序中遇到了同样的问题。)

【讨论】:

  • 当我遇到类似问题时,代码是我的,我可以修改它以避免光标重新定位并仅使用“串行输出”。不幸的是,无法修改 ftp 应用程序...如果您确实需要格式化输出,那么编写自己的命令行 FTP 客户端非常容易(例如,在 C# 中大约有几百行,请参阅 FtpWebRequest 类)。
  • 或者你可以使用 Net::FTP。对我来说就像一个冠军一样工作,即使在 FTP 到/从大型机时也是如此。
猜你喜欢
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-20
相关资源
最近更新 更多