从批处理脚本中的快捷方式获取源.exe文件名.lnk



我必须批量从.lnk快捷方式中提取源文件名。提取的文本必须位于(程序名称)中。(扩展)形式。

必须承认,当涉及到批处理(或任何脚本)时,我是一个完整的laic,因此非常感谢有关我的问题的任何帮助。

您可以使用

wmic查询来win32_shortcutfile。 只要确保你所有的反斜杠都在%filename%内反斜杠转义。

@echo off
setlocal
:: ensure user supplied a filename with a .lnk extension
if /i "%~x1" neq ".lnk" (
    echo usage: %~nx0 shortcut.lnk
    goto :EOF
)
:: set filename to the fully qualified path + filename
set "filename=%~f1"
:: convert single backslashes to double
set "filename=%filename:=\%"
:: get target
for /f "tokens=1* delims==" %%I in ('wmic path win32_shortcutfile where "name='%filename%'" get target /format:list ^| find "="') do (
    echo(%%J
)

你想要的最终会变成%%J. 如果只需要目标filename.ext,请将其更改为 %%~nxJ 。 如果只需要驱动器和路径,请将其更改为 %%~dpJ 。 有关变量扩展的详细信息,请参阅 cmd 控制台中help for的最后一页。

最新更新