转换长文件名短文件名(8.3)使用的cmd.exe转换长文件名短文件名(8.3)使用的cmd.exe

2019-05-13 14:07发布

我想一个长文件名转换为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文件这一点。 我宁愿称之为cmd.exe从Ruby脚本整个命令。 我怎样才能做到这一点?

作为一个中间步骤我试图硬编码在批处理文件的路径,但是,这并不工作:

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路径 ),然而,一个是专门要求当前目录的路径。

Answer 1:

cmd /c for %A in ("C:\Documents and Settings\User\NTUSER.DAT") do @echo %~sA


Answer 2:

更换FILENAME.TXT到文件名要转换到8.3

dir /x filename.txt

然后,您必须将结果用空格作为定界符(\在正则表达式S)分开。 然后用〜值是你的短文件名。 如果你的文件名是短暂的,首先,那么你不会找到包含字符串〜。



文章来源: Convert long filename to short filename (8.3) using cmd.exe