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" ^
您所有的绝对本地路径都对驱动器使用了错误的语法 C\:
。正确的语法是 C:\
.
mkdir C\:%year%Folder\
mkdir C\:%year%Folder\Data_User
...
WinSCP.com /command ^
....
"lcd C\:%year%Folder\Data_User" ^
您在
之后缺少引号和转义字符 (^
)
“# Change remote directory
您使用花式引号(“
和 ”
),而不是普通的双引号 ("
):
“#Set local directory”^
....
“# Change remote directory
您在
中的^
之后有一个space
"cd .."^
这有效地使 ^
被忽略(它转义了 space,而不是换行符)。
查看 WinSCP 常见问题解答 Why are some scripting commands specified on WinSCP command-line in a batch file not executed/failing?
如果这没有帮助,我们需要查看批处理文件的输出 运行(最好删除 @echo off
)。
我的第一个 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" ^
您所有的绝对本地路径都对驱动器使用了错误的语法
C\:
。正确的语法是C:\
.mkdir C\:%year%Folder\ mkdir C\:%year%Folder\Data_User ... WinSCP.com /command ^ .... "lcd C\:%year%Folder\Data_User" ^
您在
之后缺少引号和转义字符 (^
)“# Change remote directory
您使用花式引号(
“
和”
),而不是普通的双引号 ("
):“#Set local directory”^ .... “# Change remote directory
您在
中的^
之后有一个space"cd .."^
这有效地使
^
被忽略(它转义了 space,而不是换行符)。
查看 WinSCP 常见问题解答 Why are some scripting commands specified on WinSCP command-line in a batch file not executed/failing?
如果这没有帮助,我们需要查看批处理文件的输出 运行(最好删除 @echo off
)。