如何以长名称格式获取 %~dp0

如何以长名称格式获取 %~dp0

在Windows 10上,我创建了以下文件夹:

C:\BigLongFolderName

如果我从 Windows 资源管理器运行以下 test.bat,并在上述文件夹中的右键单击上下文菜单中选择“以管理员身份运行”,我会得到一个缩短的 8.3 文件夹名称。

测试脚本

echo "%~dp0"
echo %~dp0

输出:

C:\windows\system32>echo "C:\BIGLON~1\"
"C:\BIGLON~1\"

C:\windows\system32>echo C:\BIGLON~1\
C:\BIGLON~1\

如何在 Windows 10 中使用“以管理员身份运行”时获取长文件夹名称?

我希望看到的输出是C:\BigLongFolderName\

我的机器上确实有一个名为 C:\BigLongFolderName 的文件夹。

如果我运行相同的测试脚本双击它(而不是“以管理员身份运行”),然后我C:\BigLongFolderName就能像预期的那样看到完整路径。为什么“以管理员身份运行”没有给我长路径?

我将这个问题从 Stackoverflow 移出,因为“这不是一个编程问题”。

以下帖子建议我应该默认采用长名称格式,事实上我的两个同事也这样做了:

https://stackoverflow.com/questions/15567809/batch-extract-path-and-filename-from-a-variable

请注意,我不想将 8.3 名称转换为长名称。我希望返回的长名称与其他人得到的一样。

答案1

禁用 8.3 文件名。您需要重命名现有文件夹以清除现有的 8.3 文件名条目。可能有工具可以自动清除这些条目,但我不确定。(fsutil file setshortname C:\BigFolderName ""可能会有效。

相关内容