FTP通过批处理文件

时间:2015-01-16 15:03:13

标签: batch-file ftp

我搜索了论坛,发现了一些与此问题相关的帖子,但我要找的答案不在帖子中。

我从这篇文章here中提取我的推荐信。

在此批处理文件中,用户指定了以下内容:

@echo off
echo user ahk@proflightsimulatoreview.com> ftpcmd.dat
echo ahktest>> ftpcmd.dat
echo put %1>> ftpcmd.dat
echo quit>> ftpcmd.dat
ftp -n -s:ftpcmd.dat ftp.proflightsimulatoreview.com
del ftpcmd.dat

我的问题如下:

  1. put命令显示%1。如果我想在不同的目录中指定一个文件,我可以在put命令之后放置该目录的路径吗?假设bat文件与我要发送的文件不在同一个目录中。

  2. put命令显示%1,用户从命令行执行MYFTP.BAT c:\temp\hello.txt。我没有从命令行执行任何操作,而是从另一个应用程序调用bat文件。如果我不想传递参数,我可以在路径中进行硬编码并替换%1吗?

  3. ftp命令作为.bat嵌入ftp -n -s:ftpcmd.dat ftp.proflightsimulatoreview.com文件中。如果我想删除写入文件然后调用该文件的步骤,那么FTP语法是什么?写入文件并调用然后删除的文件与仅将值直接放入FTP命令有什么好处?

1 个答案:

答案 0 :(得分:0)

首先,我建议您在脚本中将%1放在双引号中,以防文件名中有空格,即如果用户这样做:

MYFTP.BAT "C:\Programs and Junk\Path with Space\file.txt"

问题1& 2分享一个共同的基础,当你理解它时,会帮助你看到它们是相关的。当你这样做时:

PUT FILE.TXT

FTP协议在当前目录中使用FILE.TXT,而 因为您尚未指定目标文件 它将其放在FTP上的当前目录中具有相同名称的服务器。所以,如果你这样做,你会遇到问题:

PUT C:\FREDDYFROG\FILE.txt

除非FTP服务器的目录名为" C:\ FREDDYFROG"这在Unix服务器上极不可能!因此,您应该考虑在服务器上指定文件名,如下所示:

PUT C:\FREDDYFROG\FILE.TXT SomeFile.txt

此外,您可以使用CD更改服务器上的目录,以便上传的文件" 登陆"在服务器上的不同目录中。您还可以使用LCD在计算机上本地更改目录。因此,以下命令会将本地文件\FREDDYFROG\FILE.TXT上传到/incoming/somefile.txt

的服务器文件系统中
LCD \FREDDYFROG
CD /incoming
PUT FILE.TXT somefile.txt

以下

PUT \FREDDYFROG\FILE.TXT /incoming/somefile.txt

最后,你的第三个问题。您 将命令放入Microsft的FTP客户端文件中,据我所知,它不会从标准输入读取命令。< / p>

您可能更喜欢curl而不是Micorosft的FTP客户端(如果可用),这样就不需要创建临时脚本文件,并且可以像这样一次完成所有操作:

curl -v -u user:password -T \FREDDYFROG\FILE.TXT ftp://server/mydir/somefile.txt