Tag: 命令行参数

Directory.GetCurrentDirectory()根据命令行参数返回不同的结果

我希望有人可以解释为什么Directory.GetCurrentDirectory()根据我将命令行参数传递给应用程序的方式返回不同的结果(使用args运行vs在app.exe上拖动文件夹) 要直接进入它,请考虑以下代码: public class Program { static void Main(string[] args) { Console.WriteLine(“The current directory is {0}”, Directory.GetCurrentDirectory()); if(args != null && args.Any()) Console.WriteLine(“Command line arguments are {0}”, String.Join(“, “, args)); Console.ReadLine(); } } 如果使用命令提示符构建并运行它,如下所示,则输出就是您所期望的。 它将输出应用程序所在的当前目录。 C:\Projects\ArgumentTest\ApplicationA\bin\Debug\ApplicationA.exe C:\mydirectory The current directory is C:\Projects\ArgumentTest\ApplicationA\bin\Debug\ Command line arguments are C:\mydirectory 如果通过在应用程序上拖动文件或文件夹来构建和运行此程序,则会得到不同的结果。 而不是返回预期的结果而不是Directory.GetCurrentDirectory()返回您在应用程序上拖动的第一个文件的路径。 我现在已经解决了这个问题,但我很想知道为什么会这样。 其他信息: .NET 4.5 Windows 2012R2(虚拟机) […]

C#Process Start需要带双引号的参数 – 它们会消失

我正在尝试使用Process.Start(ProcessStartInfo)从c#运行cmd行应用程序; 问题是,cmd行应用程序是一个matlab独立的.exe并且具有可选参数,这意味着您可以在cmd行上传递它们: app.exe “optional1” optional1value “optional2″ optional2value 其中optional1value是整数或字符串等。 我们遇到的问题是双引号不是作为“optional1”参数的一部分传递的,所以我相信cmd.exe会得到类似的东西: app.exe optional1 optional1value optional2 optional2value 或类似的东西,matlab的解析器显然会被混淆。 我试过了: @”””optional1″” optional1value “”optional2″ optional2value””” 正如其他一些关于cmd行参数中的双引号的SO问题所建议但它似乎对我没有用,也没有: “\”optional1\” optional1value \”optional2\” optional2value\”” 我写了一个小的c#命令行.exe来打印出它得到的参数。 如果我将命令行参数放在VS Project-> Debug区域并运行它然后用双引号打印它们但由于所有转义等等,当我在代码中执行此操作时,.exe打印参数而不带任何双引号。 我发现这篇文章可能是.NET 3.5的cmd解析器中的一个错误,但似乎找不到可行的解决方案。 有没有人有任何想法? 感谢您的时间, 雨披 PS有没有办法看到使用Process.Start()发送参数时cmd.exe得到了什么? 我让我的进程打开了一个cmd窗口但是很高兴看到cmd.exe行如下所示:“app.exe optional1 optional1value”等。 再次感谢。

如何在控制台应用程序中隐藏输出(而不是窗口)?

好吧,让我再说清楚。 我有一个包含许多类的控制台应用程序,在每个类中至少有一个Console.WriteLine(“text”)行。 我定义了一些参数,在运行应用程序时,它输出的正是我在类中编写的内容。 在那里,我想定义一个参数,当我使用此参数运行应用程序时,控制台屏幕上将没有输出但控制台窗口仍然出现。 这个论点可能就像“-s”。 那么,如果不在每个类中使用“if”条件并通过类传递参数,我能做到这一点吗? 非常感谢。 P / S:我通过互联网搜索并发现了一些与此相关的文章,但大多数答案是隐藏控制台窗口。 我认为这个问题应该是其他人的意思。

将命令行参数传递到WPF C#应用程序并访问其值

所以从这篇文章中我得到了以下代码,用于将命令行参数传递到我的WPF应用程序中 public partial class App : Application { private string _customerCode; public string CustomerCode { get { return _customerCode; } set { _customerCode = value; } } protected override void OnStartup(StartupEventArgs e) { if (e.Args.Count() != 0) { CustomerCode = e.Args[0].Replace(“/”, string.Empty); } } } 然后应用程序启动我的MainWindow.xaml并运行应用程序但是在ViewModel中为MainWindow.xaml(MainViewModel.cs)我想访问App.CustomerCode的值。 这是处理命令行参数的正确方法,是否可以访问CustomerCode的值?

如果我不想加载主窗体,如何在Winforms中处理命令行参数?

我想创建一个行为如下的应用程序: 在没有参数的情况下,它显示主窗体 参数“a”执行作业但主表单未加载。 在参数“b”上,表单使用传递的参数加载(加载该文档) 对于1和3,我可以在表单的构造函数中处理参数,如下所示: public ConfigurationActionManagerForm() { InitializeComponent(); Environment.GetCommandLineArgs(); // do stuff with that argument } 但是这种方法不允许我在列表中应用2.的行为。 在program.cs我可以编辑它以在创建表单之前处理参数,但是如果我不想传递表单,那么使用Application.Run()的正确方法是什么? 我将如何通知Program类实例我需要终止或显示出现错误的消息,或者甚至显示一个小任务栏图标,表明该过程正在进行操作(想想它就像解压缩过程一样)。 [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new ConfigurationActionManagerForm()); } 这种来自MSDN的方法对我的应用程序是否正确?

控制台应用程序参数,参数如何传递给Main方法

这将是来自c#beginner的问题。 当我创建控制台应用程序时,我得到带有参数args作为数组字符串的Main方法。 我不明白系统如何调用此方法以及如何将args传递给Main方法。 也许有人能解释一下? 是否重置了某种控制台类的Main方法? namespace ConsoleApplication1 { class Program { static void Main(string[] args) { } } }

请参阅传递给程序的命令行参数

你可以跳过这一部分 我正在使用我的拇指驱动器中的批处理文件来安装真正的密码卷。 我借助此链接创建了该批处理文件。 在该批处理文件中,我有用户名和密码,我将其作为参数传递给trueCrypt.exe,以便安装它。 无论如何,我的问题是:是否可以看到从第三方进程传递给程序的参数? 换句话说,是否可以看到传递给该程序的参数: using System; using System.Reflection; using System.Diagnostics; class Program { static string password = “”; static void Main(string[] args) { if (args.Length > 0) password = args[0]; // get location where this program resides var locationOfThisExe = Assembly.GetExecutingAssembly().Location; Console.Write(“Press enter to start a new instance of this program.”); Console.Read(); var […]

如何使用txt文件作为命令行参数?

我有一个像这样的.txt文件: 6 4 1 2 2 3 3 4 4 5 1 2 4 5 如何在C#中将其用作命令行参数?

Word命令行参数空间问题

我想通过使用Environment.GetCommandLineArgs()将参数传递给winword,以便在我的vsto插件中读取它。 如果参数值包含空格我无法转义字符串。 这是有效的: winword.exe /myVar1:C:\folder\whatever1.doc /myVar2:C:\folder\somethingelese.txt C:\example.doc 这不起作用: winword.exe /myVar1:”C:\folder with space\whatever1.doc” /myVar2:”C:\folder with space 2\somethingelese.txt” C:\example.doc

在.NET中获取原始(非分裂)命令行

在.NET中,我们可以从Main(string[])或Environment.GetCommandLineArgs()的参数轻松访问字符串数组中的split命令行参数。 但是,有没有办法将未解析的命令行作为一个字符串? 背景:我的应用程序将自己添加到FileExplorer上下文菜单(如Notepad ++)。 当它以这种方式启动时,文件名将在没有引用的情况下传入,这意味着如果路径中有空格,则会将其分解。 我知道我可以通过在注册表中使用引号中的%1来修复此问题,例如myapp.exe “%1” ,但是当我检查其他应用程序的注册表时,他们没有这样做。 它们很像notepad.exe %1 – 它们获得了完整的命令行。 我想知道它是否可能在.NET中以及如何实现。