Windows上的模糊路径分隔符 - 如何处理它?

Tho*_*mar 5 java windows path separator

另一个问题提出了一个有趣的问题:

在Windows中,Java的File.pathSeparatorChar;,这是正确的.但是,分号实际上也是文件夹或文件名的有效字符.您可以创建Test;Test1在Windows上命名的文件夹.

问题是:如果路径列表可以包含绝对路径和相对路径,您如何确定路径列表中的分号是实际分隔路径还是目录名称的一部分?

Sub*_*mal 5

如果路径包含;自身,则路径必须用双引号引起来"

跟随小PoC

mkdir "foo;bar"
echo echo execute %%~dpnx0 > "foo;bar\dummy.cmd"
set PATH=%PATH%;"foo;bar"
dummy.cmd
Run Code Online (Sandbox Code Playgroud)

输出将是

execute R:\temp\foo;bar\dummy.cmd
Run Code Online (Sandbox Code Playgroud)

表示dummy.cmd是通过路径设置找到的。

编辑从评论中可以看出:使用分号可能会给您带来一些麻烦。最好避免使用包含分号的目录名称。