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

如何在C#中使用WinSCP传输仅含数字无字母的文件?

问题原因

你当前的掩码拼接后为Report01|*[A-Z]*.txt,逻辑仅能匹配名为Report01的文件,同时排除所有文件名含大写字母的txt文件,既没有覆盖「仅含数字的txt文件」的匹配规则,也没有实现「排除数字后带字母的文件」的需求。同时你拼接远程路径和掩码时没有添加路径分隔符,也会导致匹配逻辑失效。

调整方案

根据你的核心需求,提供两种实现方式:

方案1:通配符实现(兼容性更好)

适合不需要严格限制文件名仅含数字,仅需要排除「数字后出现字母」的txt文件的场景:

// 匹配所有txt文件,排除所有文件名中数字后紧跟字母的txt文件
string mask = "*.txt|*[0-9][A-Za-z]*.txt"; 
TransferOperationResult transferResult;
// 注意远程路径末尾要加路径分隔符,SFTP协议用/,Windows远程路径请用\
transferResult = session.getFiles("RemoteServerPath/" + mask,"DestinationServerPath",false,transferOptions);

方案2:正则实现(匹配更精准)

适合需要严格匹配「文件名仅由数字组成的txt文件」的场景,WinSCP 5.x及以上版本支持正则掩码:

// 正则匹配:文件名仅含数字、后缀为txt的文件
string mask = @"regex:^\d+\.txt$"; 
TransferOperationResult transferResult;
transferResult = session.getFiles("RemoteServerPath/" + mask,"DestinationServerPath",false,transferOptions);
注意事项
  • 如果你的远程服务器是Windows系统,路径分隔符请替换为\
  • 如果仅需要排除大写字母,通配符方案中删除[A-Za-z]里的a-z即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:45:05