我正在尝试遍历一组文件并使用coreftp
上传到FTP站点。我需要使用核心ftp,不能使用Net::SFTP
或任何其他模块。
当我从CMD提示符运行此命令时,它运行正常,但正如您所见,它只适用于一个文件:
'"c:\program files\coreftp\coreftp.exe" -s -O -site My_Upload_Site -u //someserver/atextfile.txt -p /directory/'
我正在请求帮助将foreach
循环变量与命令提示符组合在一起。如何调用CMD脚本并将"//someserver/atextfile.txt"
替换为foreach循环中的$TheInputDir/$FileToUse
?
foreach $FileToUse(@FilesToUse)
{
'"c:\program files\coreftp\coreftp.exe" -s -O -site My_Upload_Site -u //someserver/atextfile.txt -p /directory/'
#once uploaded move the file
move ("$TheInputDir/$FileToUse", "$TheMoveDir/$FileToUse") or $MailMsg = $MailMsg . "ERROR: Moving files Failed! \n";
}
如果有更好的方法,我总是乐于接受建议。
答案 0 :(得分:-1)
我在PUTTY上取得了很大的成功,特别是PSCP
。您可以在命令行上运行PSCP
,对其进行测试并确保正确调用它。然后,在您的脚本中,使用system()
或后退滴答,或者您想要的方式调用它。使用SCP或SFTP是否更好是一个有争议的问题,我不会偏袒任何一方。就我的目的而言,PSCP
效果非常好。
不幸的是,我目前无法访问远程服务器,或者我会写一个脚本来说明它。它仍然易于使用且可靠。
下载:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
用法示例:pscp fred@example.com:/etc/hosts c:\temp\example-hosts.txt