[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] [已解决]求助:批处理sftp下载文件到本地指定目录

本帖最后由 hbxlt 于 2018-6-5 15:01 编辑

请教各位老师,如何利用批处理sftp下载远程linux服务器的文件到本地指定目录,如D:\data\sftp
谢谢
  1. @echo off
  2. echo 欢迎使用sftp 自动下载工具   
  3. psftp 202.101.248.29 -l root -pw root111 <qg.txt
  4. echo cd hb/kpi/qg > qg.txt
  5. echo bye >>qg.txt
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 hbxlt 于 2018-6-1 15:42 编辑

回复 2# Batcher

不知道为什么,使用您给的代码,还是不行。
下面是我原先的代码,能下载包含当前日期的数据文件,但是只能默认下载到当前目录,实际是需要换个目录。

@echo off
echo 欢迎使用ftp 自动下载工具   
for /f %%i in ('realdate.com /d') do (set remotelogname=%%i)
echo cd hb/kpi/qg > qg.txt
echo mget  *%remotelogname%*  >> qg.txt
echo bye >> qg.txt
echo --------------------------------------- >>qg.log  
for /f %%i in ('realdate.com /f="CCYY-MM-DD"') do (set locallogdate=%%i)
for /f %%i in ('realdate.com /f="hh:mm:ss"') do (set locallogtime=%%i)
echo %locallogdate% %locallogtime% >> qg.log
psftp 202.101.248.29 -l root -pw root111 < qg.txt > qg.log
echo. >> qg.log
echo done. >> qg.log

TOP

回复 4# Batcher

老师,我按照你的语句执行,没有效果。
如果用我的语句,pushd命令应该放到哪个位置呢?

TOP

回复 6# Batcher

老师,按照你的提示,我将PSHD命令放在PSFTP前面一行,结果是 在新目录下有qg.log,没有下载任何文件。

TOP

回复 8# Batcher

还是不行

TOP

回复 10# Batcher

putty 文件放在D:\data\sftp\
默认下载的路径也是D:\data\sftp\
想把下载的文件放到D:\data\sftp\ee下
错误提示一闪而过,好像说是pusdh的不是内部命令。

TOP

回复 12# Batcher
在批处理命令里没有写错,是我刚才回复帖子的时候写错的。

TOP

回复 14# Batcher

Microsoft Windows [???? 6.1.7601]
???????? (c) 2009 Microsoft Corporation????????????????

C:\Users\niu>d:

D:\>cd data\sftp

D:\data\sftp>test11.bat

D:\data\sftp>echo ????????ftp ????????????
????????ftp ????????????

D:\data\sftp>for /F %i in ('realdate.com /d') do (set remotelogname=%i )

D:\data\sftp>(set remotelogname=20180604 )

D:\data\sftp>echo cd hb/kpi/qg  1>qg.txt

D:\data\sftp>echo mget  *20180604*   1>>qg.txt

D:\data\sftp>echo bye  1>>qg.txt

D:\data\sftp>echo ---------------------------------------  1>>qg.log

D:\data\sftp>for /F %i in ('realdate.com /f "CCYY-MM-DD"') do (set locallogdate=
%i )

D:\data\sftp>(set locallogdate=2018-06-04 )

D:\data\sftp>for /F %i in ('realdate.com /f "hh:mm:ss"') do (set locallogtime=%i
)

D:\data\sftp>(set locallogtime=15:14:53 )

D:\data\sftp>echo 2018-06-04 15:14:53  1>>qg.log

D:\data\sftp>pushd "D:\data\sftp\ee"

D:\data\sftp\ee>psftp 202.101.248.29 -l root -pw root111  0<qg.txt
系统找不到指定的文件。

D:\data\sftp\ee>popd

D:\data\sftp>echo.  1>>qg.log

D:\data\sftp>echo done.  1>>qg.log

D:\data\sftp>

TOP

本帖最后由 hbxlt 于 2018-6-4 16:46 编辑

Microsoft Windows [???? 6.1.7601]
???????? (c) 2009 Microsoft Corporation????????????????

C:\Users\niu>d:

D:\>cd data\sftp

D:\data\sftp>test11.bat

D:\data\sftp>echo ????????ftp ????????????
????????ftp ????????????

D:\data\sftp>for /F %i in ('realdate.com /d') do (set remotelogname=%i )

D:\data\sftp>(set remotelogname=20180604 )

D:\data\sftp>echo cd hb/kpi/qg  1>qg.txt

D:\data\sftp>echo mget  *20180604*   1>>qg.txt

D:\data\sftp>echo bye  1>>qg.txt

D:\data\sftp>echo ---------------------------------------  1>>qg.log

D:\data\sftp>for /F %i in ('realdate.com /f "CCYY-MM-DD"') do (set locallogdate=
%i )

D:\data\sftp>(set locallogdate=2018-06-04 )

D:\data\sftp>for /F %i in ('realdate.com /f "hh:mm:ss"') do (set locallogtime=%i
)
D:\data\sftp>(set locallogtime=16:40:48 )
D:\data\sftp>echo 2018-06-04 16:40:48  1>>qg.log
D:\data\sftp>pushd "D:\data\sftp\ee"
D:\data\sftp\ee>psftp 202.101.248.29 -l root -pw root111  0<D:\data\sftp\qg.txt
'psftp' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

D:\data\sftp\ee>popd

D:\data\sftp>echo.  1>>qg.log

D:\data\sftp>echo done.  1>>qg.log

如果我将putty文件拷贝到D:\data\sftp\ee,就能正常执行。如果不拷贝的话,有没有办法执行?

TOP

回复 18# Batcher

谢谢老师,已正常实现功能。

TOP

返回列表