是否可以将变量传递到Windows FTP脚本文件中?

时间:2011-03-02 16:46:32

标签: windows ftp batch-file

我有一个批处理脚本,可以动态创建一些文件,并根据时间,日期等生成四个文件,这些文件有一些随机的文件名。然后需要通过FTP将该文件上传到服务器。

截至目前,我的.bat文件有一行像“ftp -s:ftp.txt”。 Ftp.txt包含一些相当简单的FTP脚本:类似这样的东西 -

open ftp.myserver.com
username
password
put filename1.dat
put filename2.dat
put filename3.dat
put filename4.dat

我想要做的是传递需要上传的文件名,然后将“put filename1.dat”替换为“put%file1%” - 其中%file1%是传入的文件名变量

这可能吗?有谁知道怎么做?或者我的整个方法是错的?

3 个答案:

答案 0 :(得分:16)

您可以使用bat文件动态生成ftp.txt文件。只需执行以下操作:

echo ftp.myserver.com>ftp.txt
echo username>>ftp.txt
echo password>>ftp.txt
echo put filename1.dat>>ftp.txt
echo put filename2.dat>>ftp.txt
echo put filename3.dat>>ftp.txt
echo put filename4.dat>>ftp.txt
ftp -s:ftp.txt

当然现在您在bat文件中可以使用环境变量和其他东西代替“filenameX.dat”

例如:

echo put %file1% >>ftp.txt

答案 1 :(得分:2)

要更新答案,这是一个更新的批处理文件。请注意在用户名和密码之后排除空格(因为它将空格传递给ftp站点)。这也将利用传递给批处理文件的参数。

echo open ftp.myserver.com>ftp.txt
echo username>>ftp.txt
echo password>>ftp.txt
echo put %1>>ftp.txt
echo quit>>ftp.txt
ftp -s:ftp.txt

答案 2 :(得分:0)

我认为Windows中的命令行FTP客户端不够智能,无法对命令进行环境/ shell变量插值。但你可以让控制的.bat文件动态生成ftp脚本,并在你还处于shell级别时执行变量。