我正在尝试在 Windows 上将长文件名转换为短文件名 (8.3)。
带有命令行参数的批处理文件按预期工作:
短.bat:
@echo OFF
echo %~s1
调用short.bat C:\Documents and Settings\User\NTUSER.DAT
返回C:\DOCUM~1\USER\NTUSER.DAT
但是,我不喜欢为此添加额外的 .bat 文件。我宁愿cmd.exe
用 ruby 脚本中的整个命令调用。我怎样才能做到这一点?
作为中间步骤,我尝试对批处理文件中的路径进行硬编码,但这不起作用:
短1.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 路径),但是该问题专门询问当前目录的路径。