计划的批处理文件未运行

时间:2019-05-30 07:41:27

标签: windows batch-file task scheduled-tasks winscp

我有一个.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文件,就像我双击它一样。我不知道是否有可能打开外壳或在后台运行它,因为它们对我都有好处。让我知道。

感谢您的建议。

1 个答案:

答案 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?