DOS: Ottenere il percorso completo Windows del Programma associato ad una Estensione

Questo il problema che volevo risolvere: data un’estensione di file (ex: .sldprt di SolidWorks), ottenere il percorso completo (in stile Windows, quindi non abbreviato DOS) del software associato che lo gestisce.

Ho risolto la cosa con questo comando DOS:

for /F "tokens=2 delims== " %f in ('cmd.exe /c ftype SldPart.Document') do set shortname=%~f&&for /F %f in ('dir /b /s %shortname%') do where /R %~dpf %~nf%~xf

il quale, nel mio caso specifico, fornisce questo risultato:

S:\Program Files\SolidWorks Corp\SolidWorks\swShellFileLauncher.exe

Nel caso in cui la tipologia di documento cercata (nel mio caso “SldPart.Document”) non sia nota ma sia conosciuta solo l’estensione (poniamo “.sldprt”), la si può ottenere con:

for /F "tokens=2 delims==" %t in ('assoc .sldprt') do echo %t

Nel caso in cui si desideri fare il tutto in un file batch, ecco un esempio:

@echo off
cls
set fileextension=.sldprt
echo Estensione: %fileextension%

for /F "tokens=2 delims==" %%t in ('cmd.exe /c assoc %fileextension%') do set filetype=%%t
@echo Tipologia File: %filetype%

for /F "tokens=2 delims== " %%f in ('cmd.exe /c ftype %filetype%') do set shortname=%%~f
@echo Nome DOS: %shortname%

@echo Nome Windows:
for /F %%f in ('dir /b /s %shortname%') do where /R %%~dpf %%~nf%%~xf

Autore: BuDuS

Disegnatore Meccanico, con la passione per l'Informatica. Come hobby, produco piccoli software di (in)utilità.