使用WinSCP get命令下载多格式文件并加时间戳重命名的方案确认
问题原因解释
WinSCP的get命令仅支持在最后一位参数填写本地目标路径模板,其余位置参数均会被识别为远程文件匹配规则。你最初的写法里*.PDF、*.TXT未携带远程路径,会被判定为当前远程工作目录下的匹配规则,多掩码与单目标模板的匹配逻辑冲突,因此无法生效。
可行方案整理
你当前使用的多条get命令拆分处理是完全可用的方案,除此之外还有两种更简洁的实现方式:
- 单条命令多掩码写法:WinSCP原生支持用分号分隔同一路径下的多个文件掩码,不需要拆分多条命令,语法如下:
"get /remote/*.XLSX;*.PDF;*.TXT \\local\*_%%TIMESTAMP#yyyymmddhhnnss%%.*"
- 批处理循环写法:如果后续需要频繁增删匹配的扩展名,可以用批处理循环统一生成命令,维护成本更低:
@echo off :: 配置项:扩展名、远程路径、本地路径、时间戳格式 set "MATCH_EXTS=XLSX PDF TXT" set "REMOTE_DIR=/remote/" set "LOCAL_DIR=\\local\" set "TS_FORMAT=%%TIMESTAMP#yyyymmddhhnnss%%" :: 循环生成get命令 for %%ext in (%MATCH_EXTS%) do ( winscp.com /command "get %REMOTE_DIR%*.%%ext %LOCAL_DIR%*_%TS_FORMAT%.*" )
方案选择建议
如果匹配的扩展名数量在3个以内,直接拆分写多条get命令可读性最高,没有额外学习成本;如果需要匹配的扩展名较多,或者规则会频繁调整,优先选择循环写法。
内容的提问来源于stack exchange,提问作者Hamez
相关产品推荐
相关产品推荐

