作为一名Java软件程序员,我经常为我的软件创建批处理脚本。 在这些脚本中,我得到了使用的文件夹的简称,以确保该软件可以在命令提示符(cmd)下使用。 但是然后,我在Windows 10上的一个用户告诉我该软件无法在他的计算机上运行。 经过一番研究,我发现曾经为我提供文件夹简称的算法在他的计算机上不起作用
我在具有不同Windows版本的各种计算机上尝试了相同的测试代码,但仅在他的计算机上,我无法获得预期的简称。
提取短名称的测试代码(对法语文本表示抱歉:它适用于法语用户):
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
@ECHO -------------------------------------
@ECHO Version de Windows :
ver
@ECHO -------------------------------------
REM Test de nom court
SET ROOT_DIR=%~dp0
SET TMP_DIR=""
REM for "usebackq delims=" /d %%I in ("%ROOT_DIR%") do (
for /d %%I in ("%ROOT_DIR%") do (
if %TMP_DIR% == "" (
SET TMP_DIR=%%~sI
)
)
@ECHO test nom court du dossier courant: '%TMP_DIR%'
PAUSE
例如,使用此文件夹(具有故意的长名称)并指定批处理代码:
D:\aa aaaaaa aa\vcxvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\ccccccccccggggggggggggttttttttttttttttrrrrrrrrr dsdqkdhqk ;
- 在Windows 7计算机上,我得到以下结果:
-------------------------------------
Version de Windows :
microsoft Windows [version 6.1.7601]
-------------------------------------
test nom court du dossier courant: 'D:\AAAAAA~1\VCXVVV~1\CCCCCC~1\'
Appuyez sur une touche pour continuer...
- 在用户的Windows 10计算机上,我得到以下结果:
-------------------------------------
Version de Windows :
microsoft Windows [version 10.0.17134.1040]
-------------------------------------
test nom court du dossier courant: 'D:\aa aaaaaa aa\vcxvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv\ccccccccccggggggggggggttttttttttttttttrrrrrrrrr dsdqkdhqk ;'
Appuyez sur une touche pour continuer...
由于这种回答,我的批处理脚本无法工作,因为命令提示符将在太长的行中引发错误。
有人知道如何在Windows 10上获得预期的简称吗?
我不知道是否有帮助(我不是Windows专家),但是我在regedit的计算机上进行了一些研究,发现了这些内容:
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\FileSystem\NtfsAllowExtendedCharacter8dot3Rename = 0
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\FileSystem\NtfsDisable8dot3NameCreation = 2
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Control\FileSystem\NtfsAllowExtendedCharacter8dot3Rename = 0
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Control\FileSystem\NtfsDisable8dot3NameCreation = 2
预先感谢您提供解决该问题的方法。
此致