如何在WinSCP批处理FTP下载中排除名称带空格的子文件夹
问题原因
报错本质是命令解析时将DO NOT USE中的空格识别为了参数分隔符,NOT被误判为单独的文件路径参数,才会出现查找/NOT文件失败的提示。你之前尝试加引号不生效,通常是因为引号包裹范围错误,或是在批处理场景下没有做转义处理。
正确实现方案
1. WinSCP独立脚本(.txt格式脚本)写法
直接把-filemask的整个参数值用双引号包裹即可:
get -filemask="|/Images/DO NOT USE/" -neweronly -resumesupport=on -resume "/FTP_FILES" "D:\FTP_Downloads"
2. Windows批处理(.bat/.cmd)中调用写法
由于批处理本身会解析双引号,需要对参数内的双引号用两个双引号转义:
winscp.com /command "open ftp://<你的账号>:<你的密码>@<FTP服务器地址>" "get -filemask=""|/Images/DO NOT USE/"" -neweronly -resumesupport=on -resume ""/FTP_FILES"" ""D:\FTP_Downloads""" "exit"
兼容所有场景的无转义替代方案
如果不想处理引号转义逻辑,可以用通配符?匹配空格,不需要加额外引号即可生效:
get -filemask=|/Images/DO?NOT?USE/ -neweronly -resumesupport=on -resume "/FTP_FILES" "D:\FTP_Downloads"
通配符?会匹配任意单个字符,刚好对应名称中的空格,只要没有其他名称格式为DOxNOTxUSE的文件夹就不会出现误判。
内容的提问来源于stack exchange,提问作者Humble Val
相关产品推荐
相关产品推荐

