我正在尝试使用 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%"