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

WinSCP won't execute the entire script specified on a command-line

我的第一个 post 但在来这里之前,我对我遇到的问题进行了研究。主要是在 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 在第一个 get 命令后执行 cd ..,然后就停止了。它不会再继续了:

如果我在命令提示符下 copy/paste,它工作正常。

有什么想法吗?

谢谢 多恩

你缺少双引号和 ^ 在行尾

改变这个:

“# Change remote directory

至:

"# Change remote directory" ^
  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. 您在

    中的^之后有一个space
    "cd .."^ 
    

    这有效地使 ^ 被忽略(它转义了 space,而不是换行符)。

查看 WinSCP 常见问题解答 Why are some scripting commands specified on WinSCP command-line in a batch file not executed/failing?


如果这没有帮助,我们需要查看批处理文件的输出 运行(最好删除 @echo off)。