Проверьте, не существует ли элемент в массиве в пакете - PullRequest
0 голосов
/ 17 ноября 2011

Я перебираю список установленных программ на компьютере и хотел бы выполнять команды, если они НЕ установлены.

В файле checkprogs.txt есть пара "path / to /a / file "=" Имя программы ", чтобы после создания списка установленных программ, если он не существует, я мог выполнить команду.

Пока что это мой сценарий:

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 Ответ

4 голосов
/ 17 ноября 2011

Если вы хотите проверить, существует ли каждое имя в файле 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 /? для получения более подробной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...