我的第一篇文章,但在来到这里之前,我对我所遇到的问题进行了研究。主要是在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
,它就会停止。它不会再进一步了:
如果我在命令提示符下复制/粘贴,它可以正常工作。
有什么想法吗?
谢谢 多恩
答案 0 :(得分:1)
你错过了双引号和
之前的行末尾的^改变这个:
“# Change remote directory
为:
"# Change remote directory" ^
答案 1 :(得分:1)
所有绝对本地路径都使用错误的语法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
{/ 1}}
后面有空格^
这有效地使"cd .."^
被忽略(它逃离空间,而不是换行符。)
请参阅WinSCP常见问题Why are some scripting commands specified on WinSCP command-line in a batch file not executed/failing?
如果这没有帮助,我们需要查看批处理文件的输出(理想情况下已删除^
)。