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

时间:2014-12-15 20:45:08

标签: windows batch-file

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

我必须承认,对于批处理(或任何实际的脚本),我是一个完整的laic,所以对我的问题的任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:5)

您可以使用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的最后一页。