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

C#调用Exiftool无法写入CSV 输出直接显示至屏幕问题

问题根因

> 输出重定向是cmd.exe的内置shell语法,不属于exiftool的原生命令参数。
当前C#代码将UseShellExecute设置为false时,会直接唤起exiftool.exe进程,不会经过命令行解释器解析重定向规则。这种场景下exiftool会把参数中的>符号、后续的CSV文件路径全部识别为普通传入参数,自然会把CSV路径判定为待扫描的第二个目录,所有输出直接打印到进程窗口,不会写入目标文件。
手动在CMD窗口执行命令能正常运行,本质是CMD提前捕获了>重定向语法,自行完成了输出流转发逻辑,根本没有把>和后续文件路径传递给exiftool进程。

修复方案

两种实现方式可根据需求选择:

方案1:通过C#捕获标准输出写入文件(推荐,匹配正式业务逻辑)

exiftool的-csv参数默认会将CSV格式内容输出到标准输出流,完全可以移除参数里的重定向片段,直接通过C#的进程重定向能力读取输出内容写入文件,不需要提前手动创建空文件。
修改后的代码示例:

Process prc_exifTool = new Process();
prc_exifTool.StartInfo.UseShellExecute = false;
prc_exifTool.StartInfo.FileName = "exiftool.exe";
prc_exifTool.StartInfo.CreateNoWindow = false; // 调试阶段保留可见窗口,正式环境可设为true
// 移除参数末尾的重定向部分
prc_exifTool.StartInfo.Arguments = "-a -g -s -charset filename=utf8 -charset exif=utf8 -charset iptc=utf8 -ee -struct -progress -c \"%.6f\" -GPSAltitude -exif:GPSAltitude -ext jpg -csv -Directory \"D:\\temp\"";
// 开启标准输出重定向
prc_exifTool.StartInfo.RedirectStandardOutput = true;
prc_exifTool.Start();
// 读取输出内容写入目标CSV
string csvContent = prc_exifTool.StandardOutput.ReadToEnd();
File.WriteAllText(Path.Combine(Path.GetTempPath(), tmpCSVFileName), csvContent, Encoding.UTF8);
prc_exifTool.WaitForExit();

注意:正式环境部署时需要移除参数里的-k,否则exiftool执行完成后会等待用户回车输入,导致进程一直挂起。

方案2:通过cmd.exe启动命令,复用shell重定向能力

如果要保留原命令的>重定向写法,不要直接启动exiftool.exe,改为启动cmd.exe,将整条exiftool命令作为参数传入,由cmd负责解析重定向逻辑,执行效果和手动在CMD敲命令完全一致。
修改后的代码示例:

Process prc_exifTool = new Process();
prc_exifTool.StartInfo.UseShellExecute = false;
prc_exifTool.StartInfo.FileName = "cmd.exe";
prc_exifTool.StartInfo.CreateNoWindow = false;
// 通过/c参数告知cmd执行后续整条命令,注意路径转义
prc_exifTool.StartInfo.Arguments = "/c exiftool.exe -a -g -s -charset filename=utf8 -charset exif=utf8 -charset iptc=utf8 -ee -struct -progress -c \"%.6f\" -GPSAltitude -exif:GPSAltitude -ext jpg -csv -Directory \"D:\\temp\" > \"C:\\Users\\nemet\\AppData\\Local\\Temp\\temp.csv\"";
prc_exifTool.Start();
prc_exifTool.WaitForExit();

该方案不需要提前手动创建空CSV文件,cmd执行重定向时会自动生成目标文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:15:51