Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以将变量传递到Windows FTP脚本文件中?_Windows_Ftp_Batch File - Fatal编程技术网

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

是否可以将变量传递到Windows FTP脚本文件中?,windows,ftp,batch-file,Windows,Ftp,Batch File,我有一个批处理脚本,它可以动态创建一些文件,并根据时间、日期等生成四个文件,其中包含一些随机文件名。然后需要通过FTP将该文件上载到服务器 现在,我的.bat文件有一行类似于“ftp-s:ftp.txt”。txt包含一些相当简单的Ftp脚本内容:如下所示-- 我要做的是传入需要上载的文件名,然后将“put filename1.dat”替换为“put%file1%”,其中%file1%是传入的文件名变量 这可能吗?有人知道怎么做吗?还是我的整个方法都错了?我认为windows中的命令行FTP客户端

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

现在,我的.bat文件有一行类似于“ftp-s:ftp.txt”。txt包含一些相当简单的Ftp脚本内容:如下所示--

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


这可能吗?有人知道怎么做吗?还是我的整个方法都错了?

我认为windows中的命令行FTP客户端不够聪明,无法对命令执行环境/shell变量插值。但是您可以让controlling.bat文件动态生成ftp脚本,并在shell级别执行变量操作。

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

要更新答案,这里有一个更新的批处理文件。注意用户名和密码后的空格被排除(因为它将空格传递给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

.bat文件可以使用变量。它们可以循环。它们可以迭代文本文件的每一行。有很多选项。问题是ftp.txt不是批处理文件,它是一系列命令,将通过管道传送到ftp客户端。@Marc如果他有批处理脚本,SuperNES可以生成ftp.txt。看到我下面的答案是原始的正确答案(因为原始答复中有空格问题),并且有额外的参数优势,您可以考虑更改所选的正确答案,以免其他人混淆。不要在<>代码> > />代码之前放置一个空格。否则,将有一个空间打印到文本文件中,破坏密码。我不得不使用
echo password>>ftp.txt
而没有额外的空间。
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