我搜索了论坛,发现了一些与此问题相关的帖子,但我要找的答案不在帖子中。
我从这篇文章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
我的问题如下:
put命令显示%1
。如果我想在不同的目录中指定一个文件,我可以在put命令之后放置该目录的路径吗?假设bat文件与我要发送的文件不在同一个目录中。
put命令显示%1
,用户从命令行执行MYFTP.BAT c:\temp\hello.txt
。我没有从命令行执行任何操作,而是从另一个应用程序调用bat文件。如果我不想传递参数,我可以在路径中进行硬编码并替换%1
吗?
ftp
命令作为.bat
嵌入ftp -n -s:ftpcmd.dat ftp.proflightsimulatoreview.com
文件中。如果我想删除写入文件然后调用该文件的步骤,那么FTP语法是什么?写入文件并调用然后删除的文件与仅将值直接放入FTP命令有什么好处?
答案 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