我正在计算机上的已安装程序列表中进行迭代,并且如果未安装它们,则会执行命令。
在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
问题是关于测试文件是否不存在的语法/方法,所以我可以执行所述命令。有什么想法吗?
答案 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 /?
了解更多详情。