我必须批量从.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
的最后一页。