我有一个.bat文件。如果我手动运行它(双击),它会起作用。如果我安排了时间,就不会这样。
我在StackOverflow上尝试了类似问题的解决方案,但没有一个起作用。喜欢:
我更改了常规选项。
我更改了启动计划任务的用户。
矿井,BTW,具有最大权限,并且双击它即可工作。
我已允许最大权限。
修改了“ 添加参数”和“ 开始于”
我没有在“ 条件”标签中设置任何条件
我是脚本新手,所以可能我设置了错误。
那是我的代码:
@echo off
"C:\Program Files (x86)\WinSCP\winscp.com" /log=winscp.log /ini=nul /command ^
"open sftp://user:password@mySite.com -hostkey=""ssh-rsa 4096 xxxxxxxxx/yyyyw=""" ^
"option batch" ^
"option transfer binary" ^
"synchronize remote -filemask=""*.png>=2016-01-01<4M;*.jpg>=2016-01-01<4M "" \\FromFolder /destination/ -nopreservetime"
"exit"
如果将md C:\Temp & echo %TIME%>C:\Temp\Test.txt
作为2°行,它将写入Test.txt
文件。如果我将其放在文件末尾,则不会。如果我双击运行它没问题。
我需要任务来运行.bat文件,就像我双击它一样。我不知道是否有可能打开外壳或在后台运行它,因为它们对我都有好处。让我知道。
感谢您的建议。
答案 0 :(得分:1)
WinSCP最有可能失败。我想这是因为您认为该批处理文件的工作目录并不理想,因此无法在其中创建winscp.log
。尝试使用类似调试路径的路径:C:\Temp\winscp.log
。
md C:\Temp & echo %TIME%>C:\Temp\Test.txt
在批处理文件末尾不起作用的原因是exit
命令。您可能会认为它被解释为WinSCP命令。但事实并非如此。 ^
命令后,您缺少synchronize
。另外,它后面还有一个空格。因此,exit
不是WinSCP命令行的一部分,而是退出了批处理文件。另外,行必须缩进(尽管我认为这是由于您的帖子格式所致)。
尝试这样的事情:
@echo off
md C:\Temp
echo %TIME% > C:\Temp\Test.txt
"C:\Program Files (x86)\WinSCP\winscp.com" /log=C:\temp\winscp.log /ini=nul /command ^
"open sftp://user:password@mySite.com -hostkey=""ssh-rsa 4096 xxxxxxxxx/yyyyw=""" ^
"option batch" ^
"option transfer binary" ^
"synchronize remote -filemask=""*.png>=2016-01-01<4M;*.jpg>=2016-01-01<4M "" \\FromFolder /destination/ -nopreservetime" ^
"exit" >> C:\Temp\Test.txt
echo %TIME% >> C:\Temp\Test.txt
另请参见WinSCP常见问题解答Why are some WinSCP scripting commands specified in a batch file not executed/failing?