我需要为正在使用的应用程序使用缩短的路径名。例如,我需要C:\PROGRA~1\
而不是C:\Program Files
。该程序无法处理空格,并且不接受带引号的路径(例如"C:\Program Files"
)。
如果有帮助的话,我正在使用 Windows 7。如果需要,我可以访问 XP 以来的任何版本。
答案1
cmd
开始,然后在运行框中输入。启动 cmd,然后使用cd
以进入您感兴趣的文件夹:
cd \
然后
dir /x
C:\>dir /x
13/10/2011 09:14 AM <DIR> DOCUME~1 Documents and Settings
13/10/2011 09:05 AM <DIR> PROGRA~1 Program Files
答案2
在一些方便的目录中创建一个 bat 文件,然后您可以从该路径复制+粘贴短路径。
您也可以运行并继续对当前目录command.com
执行命令。cd
在 Windows 批处理脚本中,%~s1
将路径参数扩展为短名称. 创建此批处理文件:
@ECHO OFF
echo %~s1
我打电话给我shortNamePath.cmd
,并这样称呼它:
C:\> shortNamePath "c:\Program Files (x86)\Android\android-sdk"
c:\PROGRA~2\Android\ANDROI~1
如果没有提供参数,则使用当前目录的版本:
@ECHO OFF
if '%1'=='' (%0 .) else echo %~s1
不带参数调用:
C:\Program Files (x86)\Android\android-sdk> shortNamePath
C:\PROGRA~2\Android\ANDROI~1
使用SET
命名变量
Windows 命令提示符有一些处理变量值中带空格的约定,这些约定有点难以学习和理解,特别是如果你有 Unix 背景的话。你可以这样做
SET TESTPATH=c:\Program Files (x86)\Android\android-sdk
(和不引号), 或者
SET "TESTPATH=c:\Program Files (x86)\Android\android-sdk"
(请注意引号的非直观位置);然后
CALL :testargs "%TESTPATH%"
︙
:testargs
echo %~s1
goto :eof
答案3
答案4
“短名称”实际上是旧的 DOS 8.3 命名约定,因此所有目录都将是前 6 个字母,然后~1
假设只有一个名称匹配,例如:
C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\BCDEFG~1 - C:\BCDEFGHIJKL M Another Directory
这是唯一的例外
C:\ABCDEF~1 - C:\ABCDEFG I AM DIRECTORY
C:\ABCDEF~2 - C:\ABCDEFGHI Directory as well