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

C#如何识别命令行参数中的目录路径并设置为当前工作目录

实现方案

你现有代码存在三处明显错误,修正后即可实现任意位置识别目录参数的需求:

  • 类型、方法调用存在拼写/格式错误:File.GettAttributes.Directory(path)、FileAttribute均为错误写法,正确获取路径属性的方法为File.GetAttributes(路径字符串),对应枚举类型为FileAttributes
  • 未过滤命令行开关:-f、-v这类以-开头的是功能开关项,不是路径,直接作为路径做校验会触发异常
  • 缺少存在性判断:直接对不存在的路径读取属性会抛出IO异常,需要先校验路径是否真实存在

实现逻辑非常直接:遍历所有传入的命令行参数,跳过开关项,对剩余参数校验是否为真实存在的目录,匹配到目标后设置为当前工作目录即可,完全不受参数所在位置影响。

完整可运行代码
using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        foreach (string arg in args)
        {
            // 跳过所有以-开头的命令行开关
            if (arg.StartsWith("-"))
            {
                continue;
            }

            // 校验当前参数是否为存在的目录
            if (Directory.Exists(arg))
            {
                Directory.SetCurrentDirectory(arg);
                // 若仅需要匹配第一个有效目录,找到后直接跳出循环即可
                break;
            }
        }

        // 后续可编写你的业务逻辑,此处为测试验证代码
        Console.WriteLine($"当前工作目录已设置为:{Directory.GetCurrentDirectory()}");
    }
}
补充说明
  • 如果你的场景需要支持传入多个目录参数,去掉代码里的break关键字,遍历完所有参数后按需处理每个匹配到的目录即可
  • 如果后续新增的开关存在带参数值的情况(比如-o output.txt这类格式),可以在现有过滤逻辑基础上扩展对应的参数解析规则,当前给出的代码可以完全覆盖你描述的两种命令执行场景
  • 用Directory.Exists()做前置校验比直接读取FileAttributes更稳妥,不会因为路径不存在抛出非预期的运行时异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:06:24