我正在尝试在Windows XP中编写一个批处理文件,它接受完全限定的路径名并输出8.3短名称版本...
@echo off
echo "%~s1"
我遇到了一个特定的情况,输出的路径和文件是不正确的...
C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62[1].ja2"
"C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62_1_~1.JA2M34V\62[1].ja2"
请注意上面的输出(“C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62_1_~1.JA2M34V\62[1].ja2”)不存在。然而,如果我从该输出中删除“.JA2M34V\ 62 [1]”部分,则生成的字符串将成为原始输入文件的有效路径。
这似乎是文件名中使用方括号([])的问题。如果我在相同的目录中创建一个名为62.ja2的文件,则输出将是正确的...
C:\>test.bat "C:\Documents and Settings\angus\Local Settings\Temporary Internet Files\Content.IE5\2JSTM34V\62.ja2"
"C:\DOCUME~1\angus\LOCALS~1\TEMPOR~1\Content.IE5\2JSTM34V\62.ja2"
这是Windows的一个漏洞吗?有没有人知道是否有解决方法可以使批处理文件正确处理这个文件名?