2011-03-02 192 views
11

我有一个批处理脚本,它可以动态地创建一些文件,并根据时间,日期等等生成四个具有一定随机文件名的文件。然后它需要通过FTP将该文件上传到服务器。是否可以将变量传递给Windows FTP脚本文件?

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

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

我希望做的是通过在需要上载的文件名,然后替换“把filename1.dat”与“put%file1%” - 其中%file1%是传入的文件名变量。

这可能吗?任何人都知道如何去做?或者我的整个方法是错误的?

+0

.bat文件可以使用变量。他们可以循环。他们可以遍历文本文件的每一行。很多选择。 – 2011-03-02 16:52:01

+0

问题在于ftp.txt不是批处理文件,它是一系列将被传送到ftp客户端的命令。 – 2011-03-02 16:55:26

+0

@Marc如果他有一个批处理脚本,SuperNES可以生成ftp.txt – 2011-03-02 17:00:20

回答

15

您可以使用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 
+0

这工作。谢谢! – SuperNES 2011-03-02 17:14:06

+0

不要在'>>'之前放一个空格,否则会在文本文件中打印一个空格,破坏密码。我不得不使用'echo password >> ftp.txt'而没有额外的空间。 – degenerate 2016-03-30 12:08:54

+1

@degenerate:固定,谢谢! – 2016-03-30 12:21:52

0

我不认为窗口中的命令行FTP客户端足够聪明,可以对命令执行环境/ shell变量插值。但是,您可以让控制.bat文件动态地生成ftp脚本,并且在仍处于shell级别时执行可变内容。

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 
相关问题