我必须批量从.lnk快捷方式中提取源文件名。提取的文本必须在(程序名称)。(扩展名)表单中。
我必须承认,对于批处理(或任何实际的脚本),我是一个完整的laic,所以对我的问题的任何帮助都非常感谢。
答案 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
的最后一页。