我想知道在满足特定条件时是否可以批量删除.lnk文件。
例如,假设我有以下文件: %userprofile%\ Microsoft \ Windows \ Start Menu \ Programs \ Startup \ Software.lnk 此链接文件实际指向C:\ Windows \ System32 \ calc.exe
应删除指向calc.exe而不是software.exe的任何.lnk文件。
如果有人有想法,非常感谢。
答案 0 :(得分:2)
您可以使用wmic
获取快捷方式文件的目标。
for %%I in (shortcut.lnk) do set "shortcut=%%~fI"
wmic path win32_shortcutfile where "name='%shortcut:\=\\%'" get target /format:list | find "="
...将检索目标。如果目标以calc.exe
结尾,您只想采取行动,只需为find
切换findstr
并使用条件执行。
for %%I in (shortcut.lnk) do set "shortcut=%%~fI"
wmic path win32_shortcutfile where "name='%shortcut:\=\\%'" get target | findstr /i "\<calc.exe *$" && (
del "%shortcut%"
)
如果要遍历目录中的所有快捷方式文件,只需将整个内容放在for
循环中并使用延迟扩展。
@echo off
setlocal
for %%I in (*.lnk) do (
rem // get full path of shortcut target
set "target=%%~fI"
rem // Because %target% was defined within this parenthetical code block,
rem // you must use delayed expansion to retrieve it.
setlocal enabledelayedexpansion
wmic path win32_shortcutfile where "name='!target:\=\\!'" get target | findstr /i "\<calc.exe *$" >NUL && (
echo %%~nxI points to calc.exe.
>>out.log echo Deleting %%~fI
del "%%~fI"
)
endlocal
)
(\<
是findstr
正则表达式中的单词边界。其余部分基于this answer。)
答案 1 :(得分:1)
检查shortcutJS.bat(它是批处理/ jscript混合,应该使用.bat
扩展名保存)
您可以使用-examine
开关:
shortcutjs.bat -examine "C:\Users\user\Desktop\some.lnk"| find /i "calc.exe" &&(
del /q /f "C:\Users\user\Desktop\some.lnk"
)