如何使用PuTTY批处理文件将最后修改的文件从远程服务器下载到本地

时间:2016-04-25 14:27:59

标签: batch-file cmd automation putty pscp

我有一个关于putty批处理文件的查询。这是我的.bat文件:

C:
cd Program Files (x86)\PuTTY
pscp -2 -v -pw khair1 -sftp  abc@****.na.ab.com:/qwe/asd/tryu/*.csv.zip P:\Projects\abc\Test_bacth\Batch_download
pause"

因此,每周我都必须提供类似/qwe/asd/tryu/**04242016***.csv.zip

的文件名

如何动态获取上次修改的所有文件。

1 个答案:

答案 0 :(得分:2)

您可以使用这些命令生成今天的标记:

for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set LDT=%%j
set STAMP=%LDT:~0,4%%LDT:~4,2%%LDT:~6,2%
echo %STAMP%

请参阅How do I get current datetime on the Windows command line, in a suitable format for using in a filename?

或使用更强大的SFTP / SCP客户端。

例如,使用WinSCP scripting,您可以执行以下操作:

"C:\Program Files (x86)\WinSCP\WinSCP.com" /command ^
    "open sftp://abc:password@****.na.ab.com/ -hostkey=""ssh-rsa 2048 xxxxxxxxxxx...=""" ^
    "get /qwe/asd/tryu/%%TIMESTAMP#yyyymmdd%%*.csv.zip ""P:\Projects\abc\Test_bacth\Batch download\""" ^
    "exit"

请参阅documentation for the %TIMESTAMP% syntax

如果时间戳实际上不是今天,而不是指定时间戳,只需为每个模式/掩码下载最新文件。

使用WinSCP很简单,只需使用-latest switch

即可
"C:\Program Files (x86)\WinSCP\WinSCP.com" /command ^
    "open sftp://abc:password@****.na.ab.com/ -hostkey=""ssh-rsa 2048 xxxxxxxxxxx...=""" ^
    "lcd ""P:\Projects\abc\Test_bacth\Batch download""" ^
    "cd /qwe/asd/tryu" ^
    "get -latest *_cpg_aob_detail.csv.zip" ^
    "get -latest *_fmcg_cob_detail.csv.zip" ^
    ...
    "exit"

另请参阅其他options for downloading the most recent files

(我是WinSCP的作者)