如何用C#调用Microsoft PowerShell执行ulozto-downloader命令?
C#调用PowerShell顺序执行ulozto-downloader命令方案
你可以通过.NET的System.Diagnostics.Process类直接启动PowerShell进程,按顺序执行指定的下载命令,每个命令执行完成后再启动下一个。以下是具体实现代码和注意事项:
实现代码
using System; using System.Diagnostics; using System.Collections.Generic; class UloztoDownloaderRunner { static void Main(string[] args) { // 预先存储需要下载的URL列表 var targetUrls = new List<string> { "https://ulozto.cz/example/file1", "https://ulozto.cz/example/file2" }; foreach (var url in targetUrls) { // 构建完整的下载命令 string downloadCommand = $"ulozto-downloader --parts 50 \"{url}\""; // 配置PowerShell进程启动参数 var processConfig = new ProcessStartInfo { FileName = "powershell.exe", Arguments = $"-Command \"{downloadCommand}\"", UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, CreateNoWindow = true, // 隐藏PowerShell窗口,需显示则设为false WindowStyle = ProcessWindowStyle.Hidden }; // 启动进程并等待执行完成 using (var process = Process.Start(processConfig)) { process.WaitForExit(); // 可选:读取命令输出和错误信息用于调试/日志 string output = process.StandardOutput.ReadToEnd(); string error = process.StandardError.ReadToEnd(); Console.WriteLine($"URL [{url}] 执行完成"); if (!string.IsNullOrWhiteSpace(output)) { Console.WriteLine("输出日志:\n" + output); } if (!string.IsNullOrWhiteSpace(error)) { Console.WriteLine("错误日志:\n" + error); } } } Console.WriteLine("所有下载任务已执行完毕"); Console.ReadLine(); } }
关键注意事项
- 确保
ulozto-downloader已安装并添加到系统环境变量中,若未添加,需在命令中指定工具的完整路径,例如:"C:\\Tools\\ulozto-downloader.exe" - 如果URL包含特殊字符(如空格、引号),代码中用
\"{url}\"的方式进行了转义,避免命令解析错误 WaitForExit()方法会阻塞当前线程,确保当前命令执行完成后才会处理下一个URL- 若需要显示PowerShell窗口,将
CreateNoWindow设为false,WindowStyle设为ProcessWindowStyle.Normal即可
内容的提问来源于stack exchange,提问作者ParaLizzard
相关产品推荐
相关产品推荐

