You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的SFTP批处理脚本仅运行首行?该如何解决?

解决SFTP批处理脚本后续命令不执行的问题

你遇到的问题根源在于:当前脚本里的sftp命令执行后会进入交互式SFTP会话,后面的pwd、cd等命令是等SFTP退出后才会在本地Windows命令行执行,根本没进入SFTP会话内部,所以只有首行命令生效。

给你两种可行的解决方法:

方法1:使用输入重定向(Here-Document)

直接在批处理脚本里把SFTP命令作为输入传递给sftp程序,修改后的脚本如下:

@echo off
sftp -oPort=PORT USER@HOST_IP_ADDRESS ^<< EOF
pwd
cd mcservers/earth/plugins
pwd
rm SomeFile.jar
put "C:\Users\USER\Documents\THE_PATH\target\AnotherFile.jar"
exit
EOF
  • 这里的^<< EOF是Windows批处理的转义写法,用来告诉sftp,直到遇到EOF之前的内容都是它的输入命令。
  • 所有SFTP操作命令都写在EOF之间,会自动在SFTP会话中依次执行。

方法2:使用SFTP的批处理命令文件

把需要执行的SFTP操作单独存成一个文本文件(比如命名为sftp_commands.txt),内容如下:

pwd
cd mcservers/earth/plugins
pwd
rm SomeFile.jar
put "C:\Users\USER\Documents\THE_PATH\target\AnotherFile.jar"
exit

然后在批处理脚本里用sftp的-b参数指定这个命令文件:

sftp -oPort=PORT -b sftp_commands.txt USER@HOST_IP_ADDRESS

这种方式把命令和脚本分离,更便于维护和修改,适合复杂的SFTP操作场景。

另外说明:你之前尝试加&符号无效,是因为&只是让命令在后台运行,但sftp依然会进入交互式会话,后续命令还是在本地执行,根本没传入SFTP会话,所以不生效。

内容的提问来源于stack exchange,提问作者ananoun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 06:00:47