检查数组中的项是否不存在批处理中

时间:2011-11-16 22:55:40

标签: 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

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

1 个答案:

答案 0 :(得分:4)

如果要检查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
    )
)
如果在文件中找不到该字符串,则

findstr返回错误级别1。输入findstr /?了解更多详情。