当使用 WinSCP 脚本时,它会打开另一个文件夹

当使用 WinSCP 脚本时,它会打开另一个文件夹

我正在尝试使用 WinSCP 自动执行从 SFTP 服务器下载文件的过程。

但我在执行部分代码时遇到了问题。建立连接后,它并没有进入指定目录,而是在目录中进行了更改,而我在脚本中从未提到过这一点。

可能存在什么问题?有人可以帮忙解决吗?

接下来是错误消息和脚本。一些带有密码和用户名的部分被覆盖,但是正确的。我手动与他们连接。

输出

batch           abort
confirm         off
Searching for host...
Connecting to host...
Authenticating...
Using username "bancaintesa".
Authenticating with pre-entered password.
Authenticated.
Starting the session...
Session started.
Error changing directory to 'C:\Users\darkovuj\Desktop'.
System Error.  Code: 2.
The system cannot find the file specified
Active session: [1] **********@195.178.44.158
0 File(s) copied
Press any key to continue . . .

来自 .bat 文件的脚本

@echo off
setlocal

REM === Starting SFTP Download Task ===
echo Starting SFTP Download Task

REM Set your SFTP server credentials
set SFTP_USER=********
set SFTP_PASS=*********
set SFTP_SERVER=195.178.44.158
set SFTP_PORT=22

REM Set the local folder paths
set DESTINATION_DIR=C:\olconnect\BI_SNE\input

echo getting date

REM Get the current date in YYYYMMDD format
for /f "tokens=1-3 delims=/ " %%a in ('date /t') do (
    set "YYYY=%%c"
    set "MM=%%a"
    set "DD=%%b"
)
set CURRENT_DATE=%YYYY%%MM%%DD%

echo date completed

REM Create the download directory with the current date
set DOWNLOAD_DIR=C:\olconnect\BI_SNE\backup\%CURRENT_DATE%
mkdir "%DOWNLOAD_DIR%"

REM Specify the path to the WinSCP commands file
set WINSCP_SCRIPT_PATH=C:\olconnect\BI_SNE\download_automation.txt

REM Run WinSCP to download files and delete them from the server
"C:\winscp514\winscp.com" /script="%WINSCP_SCRIPT_PATH%"


REM Copy downloaded files to the destination directory
xcopy /Y /I "%DOWNLOAD_DIR%\*.pdf" "%DESTINATION_DIR%"

echo completed copying...

REM Keep the window open to see the output
pause

endlocal

以及 WinSCP 命令 txt 的代码

option batch abort
option confirm off
open sftp://%SFTP_USER%:%SFTP_PASS%@%SFTP_SERVER%:%SFTP_PORT% -hostkey="ssh-ed25519 255 *************************"
cd /SNETest
lcd %DOWNLOAD_DIR%
get *.pdf
rm *.pdf
exit

如果有人能帮忙就太好了!谢谢!

答案1

Error changing directory to 'C:\Users\darkovuj\Desktop'.

此路径来自您的 GUI 或配置文件设置。错误甚至在 WinSCP 尝试更改远程目录之前就出现了,因此无法到达脚本的这一部分:

cd /SNETest
lcd %DOWNLOAD_DIR%

该选项/ini=nul应该可以修复它:

"C:\winscp514\winscp.com" /ini=nul /script="%WINSCP_SCRIPT_PATH%"

但这也会禁用/更改其他当前活动的设置。因此请注意检查并提供此会话所需的详细信息。


您还可以将会话的详细信息存储在 ini 文件中,从而简化项目的批处理和脚本部分。

在这种情况下调用:

"C:\winscp514\winscp.com" /ini="MyConfig.ini" /script="%WINSCP_SCRIPT_PATH%"

相关内容