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

如何从SVN仓库路径下获取所有pdf和doc格式的文件?

问题根因

你在代码中直接将带|管道符的字符串作为svn命令的入参传入是无效的:管道符是操作系统shell(cmd、bash等)的专属功能,并非svn.exe本身支持的参数。直接传给svn程序时,后面的grep/find相关内容会被识别为svn list的无效参数,因此返回空结果。你直接在cmd中执行命令时是shell先解析了管道逻辑,所以能正常运行。

可行解决方案

方案1:通过shell执行整行命令(适合Windows环境)

直接调用cmd.exe执行完整命令,让shell处理管道逻辑,同时用findstr实现多后缀匹配,示例代码如下:

// 以C#为例,arguments参数传给cmd.exe而非svn.exe
arguments = $"/c svn.exe list -R {link} | findstr /i /r \"\\.pdf$ \\.doc$ \\.docx$\"";

参数说明:

  • /i 忽略大小写,可同时匹配.PDF、.Pdf等格式
  • /r 启用正则匹配,$ 限定匹配文件名末尾的后缀,避免命中文件名中间带pdf/doc字符的文件
  • 额外加了.docx匹配,可根据需求删掉

方案2:代码层面过滤结果(兼容性更强,跨平台可用)

不依赖shell管道逻辑,稳定性更高:

  1. 先执行arguments = $"list -R {link}"拿到全部文件列表
  2. 在代码中遍历返回的每一行文件名,自行判断是否以.pdf/.doc/.docx结尾,保留符合条件的结果即可
原有命令失效的具体原因
  • 带grep的命令:Windows原生cmd不自带grep工具,且没有走shell解析管道逻辑,完全无效
  • 带find.pdf的命令:cmd中find命令语法错误,缺少空格和匹配内容的引号,正确原生用法为find ".pdf"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 06:54:03