检查数组中的项目是否不存在于批次中

Cry*_*ite 1 batch-file

我正在迭代计算机上已安装程序的列表,并且希望在未安装它们时执行命令。

在 checkprogs.txt 中是一对"path/to/a/file"="Program Name",这样在构建已安装程序的列表后,如果它不存在,我可以执行命令。

到目前为止,这是我的脚本:

If Exist installedprogs.txt Del installedprogs.txt
regedit /e regexport.txt "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall"
find "DisplayName" regexport.txt >regprogs.txt
echo Gazebo: Installed Programs
for /f "tokens=2 delims==" %%a in (regprogs.txt) do (
    for /f "tokens=1-2 delims==" %%b in (checkprogs.txt) do (
        **IF NOT EXISTS DO STUFF HERE**
    )
)
del regexport.txt
del regprogs.txt
Run Code Online (Sandbox Code Playgroud)

问题是关于测试文件是否不存在的语法/方法,因此我可以执行所述命令。有任何想法吗?

Aac*_*ini 5

如果你想检查regprogs.txt文件中的每个名称是否存在于checkprogs.txt文件中,那么你可以使用findstr以下命令:

setlocal EnableDelayedExpansion

echo Gazebo: Installed Programs
for /f "tokens=2 delims==" %%a in (regprogs.txt) do (
    findstr /C:"%%a" checkprogs.txt > nul
    if !errorlevel! == 1 (
        echo %%a NOT EXISTS
        rem do more stuff here
    )
)
Run Code Online (Sandbox Code Playgroud)

findstr如果在文件中未找到该字符串,则返回等于 1 的错误级别。键入findstr /?以获取更多详细信息。