Nano Hash - криптовалюты, майнинг, программирование

wmic найти информацию и поместить ее в другой текстовый файл

Я работаю над кодом для поиска информации. Я использую wmic для этого.

  1. Прошу с WMIC "установленные программы" и экспортирую их в tmp.txt
  2. Я хочу отфильтровать tmp.txt и поместить результаты в другой текстовый документ.

Но что-то не так. Я не получаю результаты для компьютеров в текстовом файле.

Это код, который я создал:

@echo off
title Check software
color 1f

for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%
set timestamp=Datum-%YYYY%%MM%%DD%--Tijd-%HH%%Min%%Sec%

set txt=results--%timestamp%.txt

if exist "1e-client" (
        echo Check: Map aanwezig
        goto :checkfolder
    ) else (
        echo Check: Map NIET aanwezig
        echo Map 1e-client maken...
        mkdir "1e-client"
        goto :checkfolder
    )

:checkfolder
FOR /F "tokens=*" %%I in (list.txt) do call :pinger %%I goto :eof

:eof
move %txt% 1e-client
exit

:pinger

ping -4 -n 1 -w 1000 %1
if not errorlevel 1 set pingstatus=Ja
if errorlevel 1 set pingstatus=Nee
echo Computer: %1 >> %txt%
Echo Online: %pingstatus% >> %txt%
wmic /node:%1 /output:c:\tmp.txt product get name,version |findstr /c:"1E NomadBranch" c:\tmp.txt > %txt%

ping 1.1.1.1 -n 1 -w 100 >nul
echo 1eClient Geinstalleerd: %client% >> %txt%
echo 1eClient versie; >> %txt%
type tmp.txt >> %txt%

Обновлять. Это список, который я создаю WMIC. Мне нужно найти "1E NomadBranch" и импортировать его в файл %txt%.

Compatibility Pack for the 2007 Office system                       12.0.6514.5001  
Microsoft Office Visio Viewer 2007                                  12.0.4518.1014  
Microsoft Software Update for Web Folders  (English) 14             14.0.6029.1000  
Microsoft Office OneNote MUI (English) 2010                         14.0.6029.1000  
Microsoft Office Standard 2010                                      14.0.6029.1000  
Microsoft Office Shared Setup Metadata MUI (English) 2010           14.0.6029.1000  
Microsoft Office Excel MUI (English) 2010                           14.0.6029.1000  
Microsoft Office PowerPoint MUI (English) 2010                      14.0.6029.1000  
Microsoft Office IME (Japanese) 2010                                14.0.4763.1000  
1E NomadBranch                                                      5.0.100         
Microsoft Office IME (Korean) 2010                                  14.0.4763.1000  
Microsoft Office IME (Chinese (Traditional)) 2010                   14.0.4763.1000  
Microsoft Office IME (Chinese (Simplified)) 2010                    14.0.4763.1000  
Microsoft Office Publisher MUI (English) 2010                       14.0.6029.1000  
Microsoft Office Outlook MUI (English) 2010                         14.0.6029.1000  
Microsoft Office ProofMUI (English) 2010                            14.0.4763.1000  
Microsoft Office Word MUI (English) 2010                            14.0.6029.1000  
Microsoft Office Proofing Kit 2010                                  14.0.4763.1000  
Microsoft Office Access Runtime 2010                                14.0.4763.1000  
Microsoft Office Access Runtime MUI (English) 2010                  14.0.4763.1000  
Microsoft Office Proofing (English) 2010                            14.0.6029.1000  
Microsoft Office Shared MUI (English) 2010                          14.0.6029.1000  
Microsoft Office Proof (Italian) 2010                               14.0.4763.1000  
Microsoft Office Proof (Catalan) 2010                               14.0.4763.1013  
Microsoft Office Proof (Dutch) 2010                                 14.0.4763.1000  
Microsoft Office Proof (German) 2010                                14.0.4763.1000  
Microsoft Office Proof (English) 2010                               14.0.6029.1000  
Adobe Flash Player 10 ActiveX                                       10.1.85.3       
Microsoft redistributable runtime DLLs VS2010 SP1 (x86)             10.0.40219.1    
Microsoft Visual C++ 2005 ATL Update kb973923 - x86 8.0.50727.4053  8.0.50727.4053  
Microsoft .NET Framework 3.0 Service Pack 2                         3.2.30729       
OFFICE 2010 STANDARD P1                                             14.01.00.00     
Microsoft redistributable runtime DLLs VS2008 SP1(x86)              9.0             
WINZIP US V14.05.00.00.00                                           14.05.00.00     
Configuration Manager Client                                        5.00.7804.1000  
Microsoft .NET Framework 3.5 SP1                                    3.5.30729       
Microsoft .NET Framework 4 Client Profile                           4.0.30319       
Microsoft .NET Framework 4 Extended                                 4.0.30319       

Ответы:


1

я бы посоветовал тебе изменить

FOR /F "tokens=*" %%I in (list.txt) do call :pinger %%I goto :eof

:eof
move %txt% 1e-client
exit

to

FOR /F "tokens=*" %%I in (list.txt) do call :pinger %%I
move %txt% 1e-client
exit

потому что :eof — это специальная метка, означающая «конец файла». Его не следует назначать в пакетном файле.

Кроме того, кажется, что у него нет цели там, где он есть. Если бы вы закодировались

FOR /F "tokens=*" %%I in (list.txt) do call :pinger %%I&goto :eof

тогда пакет должен был завершиться после обработки первой строки в list.txt. В его нынешнем виде goto должен был просто стать неиспользуемым вторым параметром для :pinger, а :eof — неиспользуемым третьим параметром.

Лично я всегда использую только goto label (без двоеточия), кроме goto :eof (особое условие), чтобы избежать этой самой проблемы.

Я считаю, что настоящая причина вашей проблемы здесь:

Echo Online: %pingstatus% >> %txt%
wmic /node:%1 /output:c:\tmp.txt product get name,version |findstr /c:"1E NomadBranch" c:\tmp.txt > %txt%

ping 1.1.1.1 -n 1 -w 100 >nul

Это отразит все в файле txt, затем запустит wmic и отправит его вывод в c:\temp.txt (поскольку вы укажете /output) и отправит вывод экрана в findstr, который, похоже, также читает c:\temp.txt, который, вероятно, открыт в то время... и чтобы завершить все это, вы затем перенаправляете вывод findstr на новый txt (поскольку вы используете перенаправитель create new, >, а не перенаправитель append, >>.

я бы предложил

Echo Online: %pingstatus% >> %txt%
wmic /node:%1 /output:c:\tmp.txt product get name,version 
findstr /c:"1E NomadBranch" c:\tmp.txt >> %txt%

ping 1.1.1.1 -n 1 -w 100 >nul

... но я признаю, что не проверял это.

17.02.2014
  • Большое спасибо за ответ! Я тестировал код. Но проблема в том. ВМИК работает. Но когда я использую FINDSTR, я не получаю никакого результата в файле% txt%. У меня есть tmp txt со всем программным обеспечением. Но как заставить «фильтр» работать и поместить его в %txt%. 17.02.2014
  • Вам нужно опубликовать репрезентативный образец файла temp.txt и описать, какую информацию вы хотите извлечь. 17.02.2014
  • Я использую этот код: _findstr 1E NomadBranch C:\tools\testomgeving\tmp%1.txt ›› %txt%, но он не работает_. Смотрите мой вопрос для списка. 17.02.2014
  • Похоже, вы создаете c:\tmp.txt из WMIC, а затем ищете C:\tools\testomgeving\tmp%1.txt текстовую строку, где %1 будет заменено содержимым каждой строки в list.txt по очереди. 17.02.2014
  • Это правильно, я разместил его здесь как c:\tmp.txt, но он не работает, даже когда я использую c:\tools\testomgeving\tmp%1.txt 18.02.2014

  • 2

    В этой строке ниже есть ошибка - вы ее исправили?

    Вместо этого

    FOR /F "tokens=*" %%I in (list.txt) do call :pinger %%I goto :eof
    

    используйте это (что не предполагает пробелов и т. д. в терминах)

    FOR /F "tokens=*" %%I in (list.txt) do call :pinger %%I&goto :eof
    

    Это предполагает, что вы хотите обработать только первую строку list.txt

    17.02.2014
  • Когда я добавляю & к %%I&GOTO, пакет не может зацикливаться. Когда я использую %%I GOTO, он зацикливается. 17.02.2014
  • Затем удалите goto :eof, если вы не хотите переходить после первой строки. 17.02.2014
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..