我正在制作一个批处理文件,将文件上传到SFTP服务器上的一个特定文件夹。当我使用任务计划程序运行该文件时,它显示没有错误,但没有任何内容上载到客户端的SFTP文件夹中。这是我的批处理脚本:
System.load("PATH")
答案 0 :(得分:1)
批处理文件中存在很多问题。我至少可以确定:
您设置环境变量upload
(由于我不理解的原因),您不使用它。直接调用WinSCP:
winscp.exe /console /command ...
虽然没有严格错误,但使用批处理文件中的winscp.exe
(GUI应用程序)会使调试变得复杂(它会启动一个单独的窗口或WinSCP进程)。请改用winscp.com
(console application)。对于winscp.com
,/console
参数是多余的:
winscp.com /command ...
您使用文件名"c:\apps\ftpfiles\name_%d%.txt"
,就好像它是一个命令一样。如果您要上传此特定文件,请使用put
command:
"put c:\apps\ftpfiles\name_%d%.txt"
您错过open
command至verify your server's hostkey的-hostkey
开关。
您错过了exit
command(以及close
冗余之前的exit
。
从date
环境变量中获取时间戳是不可靠的(date
的值是特定于语言环境的)。使用WinSCP %TIMESTAMP%
construct:
"put c:\apps\ftpfiles\name_%TIMESTAMP#yyyymmdd%.txt"
(您需要为%TIMESTAMP%
使用WinSCP 5.7或更高版本。)
使用最新版本的WinSCP,option confirm off
is unnecessary。
所有应用,您的批处理文件将包含一个命令:
@echo off
winscp.com /command ^
"open sftp://user:pass@example.com -hostkey=""your-servers-hostkey""" ^
"put c:\apps\ftpfiles\name_%%TIMESTAMP#yyyymmdd%%.txt" ^
"exit"