I have scripted CvtLFNSFN.bat to convert a LFN (Long File Name) to a SFN (Short File Name).

NOTE: LFN refers to the file name and extension, NOT to the folder path.

The syntax for using CvtLFNSFN.bat is:

CvtLFNSFN LFN SFN

Where LFN can be the LFN or the FQFN (Fully Qualified File Name), and SFN is a call directed environment variable that will contain the SFN.

NOTE: Neither the LFN nor the FQFN has to exist.

CvtLFNSFN.bat contains:

@echo off                              if \{%2\}==\{\} @echo Syntax: CvtLFNSFN LFN SFN&goto :EOF                              setlocal                              set file=%~nx1                              @echo.>"%TEMP%\%file%"                              :loop                              for /f "Tokens=1* Delims=\" %%a in ('dir "%TEMP%\%file%" /X^|find "%file%"') do (                               set line=%%a                              )                              del /q "%TEMP%\%file%"                              for /f "Tokens=1*" %%a in ('@echo %line:~36%') do (                               set sfm=%%a                              )                              endlocal&set %2=%sfm%