FTP 通过批处理文件
FTP via batch file
我在论坛上搜索了一下,找到了几个与这个问题相关的post,但是我要找的答案不在post中。
我正在从这个 post 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
命令作为 ftp -n -s:ftpcmd.dat ftp.proflightsimulatoreview.com
嵌入到 .bat
文件中。如果我想删除写入文件然后调用文件的步骤,FTP 语法是什么?写入文件并调用文件然后删除与直接将值放入 FTP 命令有什么好处?
首先,我建议您在脚本中将 %1
用双引号引起来,以防您的文件名中包含 space,即万一用户执行以下操作:
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
以便上传的文件“land”在服务器上的不同目录中。您还可以使用 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 客户端的文件中,它不会从标准输入读取命令我知道。
您可能更喜欢 curl
而不是 Micorosft 的 FTP 客户端(如果可用的话),这将避免创建临时脚本文件并像这样一次完成所有操作的需要:
curl -v -u user:password -T \FREDDYFROG\FILE.TXT ftp://server/mydir/somefile.txt
我在论坛上搜索了一下,找到了几个与这个问题相关的post,但是我要找的答案不在post中。
我正在从这个 post 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
命令作为ftp -n -s:ftpcmd.dat ftp.proflightsimulatoreview.com
嵌入到.bat
文件中。如果我想删除写入文件然后调用文件的步骤,FTP 语法是什么?写入文件并调用文件然后删除与直接将值放入 FTP 命令有什么好处?
首先,我建议您在脚本中将 %1
用双引号引起来,以防您的文件名中包含 space,即万一用户执行以下操作:
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
以便上传的文件“land”在服务器上的不同目录中。您还可以使用 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 客户端的文件中,它不会从标准输入读取命令我知道。
您可能更喜欢 curl
而不是 Micorosft 的 FTP 客户端(如果可用的话),这将避免创建临时脚本文件并像这样一次完成所有操作的需要:
curl -v -u user:password -T \FREDDYFROG\FILE.TXT ftp://server/mydir/somefile.txt