从安装的命令行程序获取文件路径

Get File Path from installed command line program

我有一个 java 程序,它被构建、打包为 .exe 可执行文件并放置在另一个位置(就像已安装的程序一样)。

此程序可通过命令行访问,因为它位于 %PATH% 变量中。

我希望用户能够 "cd" 到一个目录,并启动我的程序接收一个相对文件名,例如 C:\temp>programname.exe inputfile.txt.

到目前为止一切顺利,尽管 java 假定相关文件 "inputfile.txt" 位于 <installed.exe.location\inputfile.txt>

我怎样才能java得到当前工作的命令行目录? 例如C:\temp\inputfile.txt

四处寻找我尝试了以下方法:

String inputFile = (args[0]);
System.out.println("file path: " + new File(inputFile).getAbsolutePath());
System.out.println("1: " + Paths.get("."));
System.out.println("2: " + Paths.get(""));
System.out.println("3: " + new File("").getAbsolutePath());
System.out.println("4: " + new File(".").getAbsolutePath());
System.out.println("5: " + new File(".").getCanonicalPath());
System.out.println("6: " + new File("").getCanonicalPath());
System.out.println("7: " + System.getProperty("user.dir"));

产生:

file path: C:\program files\testprog\bin\testprog.exe\inputfile.txt
1: .
2:
3: C:\program files\testprog\bin\testprog.exe
4: C:\program files\testprog\bin\testprog.exe\.
5: C:\program files\testprog\bin\testprog.exe
6: C:\program files\testprog\bin\testprog.exe
7: C:\program files\testprog\bin\testprog.exe

如何java获取C:\temp目录?

在Launch4J中,有一个选项:

<chdir>.</chdir>

如果删除 .它有效。

参考: https://sourceforge.net/p/launch4j/discussion/332684/thread/bd4993f1/