2011-11-16 71 views
0

我正在遍历计算机上已安装程序的列表,并且希望在未安装的情况下执行命令。检查数组中的项目是否不存在批处理

在checkprogs.txt是“路径/到/一个/文件” =“节目名”的配对,使得建筑安装的程序的列表后,如果不存在的话,我可能会执行命令。

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

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 

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

+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的ERRORLEVEL如果字符串中未找到文件。请输入findstr /?了解更多详情。

+0

太棒了!谢谢。但是,我确实需要切换regprog和checkprog,以便通过checkprog来查看它是否存在于regprogs中,但这只是一个小问题。先生,非常感谢。 – Cryptite

相关问题