我有一个将多个文件从Windows Server 2016传输到FTP站点的进程。计划任务每小时运行一个批处理脚本来实现此目的。
批处理脚本中的原始代码如下
@echo off
echo user username > ftpcmd.dat
echo password >> ftpcmd.dat
echo bin >> ftpcmd.dat
echo cd private/DirA >> ftpcmd.dat
echo put "D:\Data\Export\FileA.csv" >> ftpcmd.dat
echo quit >> ftpcmd.dat
ftp -n -s:ftpcmd.dat my.address.co.uk
del ftpcmd.dat
@echo off
echo user username > ftpcmd.dat
echo password >> ftpcmd.dat
echo bin >> ftpcmd.dat
echo cd private/DirB >> ftpcmd.dat
echo put "D:\Data\Export\FileB.csv" >> ftpcmd.dat
echo quit >> ftpcmd.dat
ftp -n -s:ftpcmd.dat my.address.co.uk
del ftpcmd.dat
cd /d D:\Data\Export\
del *.csv
此代码有效。但是我需要一个FTP上传日志,所以我想添加" > log.txt
"和" >> log.txt
" ftp命令会给我这个。新的批处理文件是
@echo off
echo user username > ftpcmd.dat
echo password >> ftpcmd.dat
echo bin >> ftpcmd.dat
echo cd private/DirA >> ftpcmd.dat
echo put "D:\Data\Export\FileA.csv" >> ftpcmd.dat
echo quit >> ftpcmd.dat
ftp -n -s:ftpcmd.dat my.address.co.uk > log.txt
del ftpcmd.dat
@echo off
echo user username > ftpcmd.dat
echo password >> ftpcmd.dat
echo bin >> ftpcmd.dat
echo cd private/DirB >> ftpcmd.dat
echo put "D:\Data\Export\FileB.csv" >> ftpcmd.dat
echo quit >> ftpcmd.dat
ftp -n -s:ftpcmd.dat my.address.co.uk >> log.txt
del ftpcmd.dat
cd /d D:\Data\Export\
del *.csv
这不起作用。它不会生成日志文件,也不会上传任何文件(尽管它最后会删除文件夹中的csv文件)。
还值得注意的是,直接运行批处理文件(只需双击它)就会上传文件并创建log.txt,但是当从任务计划程序运行时它会失败。
我已经检查了权限,并且任务设置为使用我的用户帐户(即我已经测试批处理文件的帐户)运行,实际上只要没有日志文件就可以运行输出
关于接下来要检查什么的任何想法?或者有另一种获取ftp对话日志的方法吗?也许将它写入变量并在脚本末尾输出变量?
我很高兴将问题转移到Server Fault,如果它更合适的话。