如果我有一个常规的控制台应用程序(或任何其他应用程序)并使用 Windows 资源管理器将文件拖到 .exe 文件上(以便将该文件用作“命令行输入”),则设置当前目录到其他目录(我的主文件夹?),而不是应用程序所在的目录。如果我通过双击启动应用程序,则当前目录设置正确。
这是什么原因?有没有办法将应用程序的文件夹用作当前目录?
如果我有一个常规的控制台应用程序(或任何其他应用程序)并使用 Windows 资源管理器将文件拖到 .exe 文件上(以便将该文件用作“命令行输入”),则设置当前目录到其他目录(我的主文件夹?),而不是应用程序所在的目录。如果我通过双击启动应用程序,则当前目录设置正确。
这是什么原因?有没有办法将应用程序的文件夹用作当前目录?
寻找一个原因,我在autoitscript.com上找到了这个:
[应用程序] 简单地继承 Explorer 的工作目录
这与我自己的观察一致,例如键盘上的可编程键。
我的解决方法是重置工作目录。在 C# 中,您可以这样做:
System.Environment.CurrentDirectory = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
当您在 Linux 上不使用命令行启动单声道应用程序时,您也必须这样做。
这正是为什么您的应用程序一开始不应该依赖工作目录的原因。文件的完整路径将在命令行中指定。如果需要,解析它的路径。