WinSCP不会执行命令行中指定的整个脚本

时间:2015-12-08 18:03:10

标签: winscp

我的第一篇文章,但在来到这里之前,我对我所遇到的问题进行了研究。主要是在WinSCP论坛上,但它没有实现。

使用winscp.com,我希望脚本使用get命令使用SFTP下载多个文件。这是我的版本:

echo ENTER WEEK NUMBER

set /p input=""

cls

Rem Create folder based on date

set year=%date:~6,4%


mkdir \\11.111.111.11\Folder1\"Folder 2"\#Folder3\%year%_WK%input%

mkdir \\11.111.111.11\Folder1\"Folder 2"\#Folder3\%year%_WK%input%\User_1

mkdir \\11.111.111.11\Folder1\"Folder 2"\#Folder3\%year%_WK%input%\User_2

mkdir \\11.111.111.11\Folder1\"Folder 2"\#Folder3\%year%_WK%input%\User_3

c:

cd Program Files (x86)

cd Winscp

WinSCP.com /command ^

        "#echo off" ^

        "# Connect to server"^

        "Open sftp://Uname:pass@999.999.999.999" ^

        "# batch off mode" ^

        "option batch off" ^

        "lcd \\11.111.111.11\Folder1\""Folder 2""\#BFolder3\%year%_WK%input%\User_3" ^

        "cd .."^

        "cd RemoteFolder/USer_Folder" ^

        "get %year%WK%input%.zip"^

        "cd .."^ 

        "cd User_2_Folder" ^

        "get User2WK%input%.csv"^

        "get SAV_LACWK%input%.csv"^

问题是,WinSCP在第一个cd ..命令之后执行get,它就会停止。它不会再进一步​​了:

enter image description here

如果我在命令提示符下复制/粘贴,它可以正常工作。

有什么想法吗?

谢谢 多恩

2 个答案:

答案 0 :(得分:1)

你错过了双引号和

之前的行末尾的^

改变这个:

“# Change remote directory

为:

"# Change remote directory" ^

答案 1 :(得分:1)

  1. 所有绝对本地路径都使用错误的语法C\:作为驱动器。正确的语法是C:\

    mkdir C\:%year%Folder\
    mkdir C\:%year%Folder\Data_User
    ...
    
    WinSCP.com /command ^
        ....
        "lcd C\:%year%Folder\Data_User" ^
    
  2. 您在

    之后缺少引号和转义字符(^
        “# Change remote directory
    
  3. 您使用的是引用的引号(),而不是简单的双引号("):

        “#Set local directory”^
        ....
        “# Change remote directory
    
  4. {/ 1}}

    后面有空格
    ^

    这有效地使"cd .."^ 被忽略(它逃离空间,而不是换行符。)

  5. 请参阅WinSCP常见问题Why are some scripting commands specified on WinSCP command-line in a batch file not executed/failing?

    如果这没有帮助,我们需要查看批处理文件的输出(理想情况下已删除^)。