我试图在Windows上将长文件名转换为短文件名(8.3)。
一个带有命令行参数的批处理文件可以按预期工作:
short.bat:
@echo OFF
echo %~s1
调用short.bat C:\Documents and Settings\User\NTUSER.DAT
会返回C:\DOCUM~1\USER\NTUSER.DAT
然而,我不想使用额外的.bat文件。我宁愿从ruby脚本中使用整个命令来调用cmd.exe
。如何实现?
作为中间步骤,我尝试在批处理文件中硬编码路径,但这样做不起作用:
short1.bat:
@echo OFF
SET filename="C:\Documents and Settings\User\NTUSER.DAT"
echo %filename%
echo %~sfilename%
echo %filename%
可以正常运行,但是 echo %~sfilename%
会出现以下错误:
The following usage of the path operator in batch-parameter
substitution is invalid: %~sfilename%
For valid formats type CALL /? or FOR /?
如果 short1.bat 能够运行,我该如何将其转换为一个可以用
cmd.exe \c ...
来调用的单行命令?还有一个问题(如何获取 DOS 路径而不是 Windows 路径),但那个问题专门询问当前目录的路径。