【发布时间】:2021-02-13 17:56:35
【问题描述】:
我有一个 java 程序,想将一些文件路径作为命令行参数传递。 如果它们包含空格,我必须引用它们。这适用于 Linux 和 Windows。 但是在 Windows 上,如果路径包含斜杠,我会遇到问题。
为了测试这一点,我编写了一个简单的Echo.java 程序。
所以,如果我说:
java -cp 。 "C:\Program Files\" "C:\Other Files"
[C:\Program Files" C:\Other]
[Files]
那么,这里发生了什么?反斜杠似乎逃脱了引用。 对于 Linux,这没问题,但这是在 Windows 上!
但即使这样:
设置 PF="C:\Program Files\"
java -cp 。 "%PF%" "C:\其他文件"
[C:\Program Files" C:\Other]
[Files]
没有斜杠,它可以按预期工作:
java -cp 。 "C:\Program 文件" "C:\其他文件"
[C:\Program Files]
[C:\Other Files]
【问题讨论】:
-
更正:我使用 set PF=C:\Program Files\ 不带引号。添加引号会使情况变得更糟。
-
另一个错字:java -cp。 Echo "C:\Program Files\" "C:\Other Files"
-
目录路径不也不应该以尾部反斜杠
\结尾。反斜杠是一个路径分隔符,如果没有什么要分隔的,你不应该使用它,将路径更改为"C:\Program Files",你已经为"C:\Other Files"做了那个,所以我不确定你为什么有那个反正不一致。此外,您不应该使用硬编码的双引号来定义变量,您应该使用Set "PF=C:\Program Files"。此外,如果您的路径确实如此,那么为什么还要定义一个变量,%ProgramFiles%已经存在于相关路径中。 -
只需将
.附加到目录路径,就不必担心尾随反斜杠;即使原始路径没有尾部反斜杠,这也有效,不会改变其目标......
标签: java batch-file command-line-arguments