wmic查找信息并将它们放在另一个txt文件中

时间:2014-02-17 10:41:13

标签: batch-file batch-rename wmic

我正在编写搜索信息的代码。我使用wmic。

  1. 我向WMIC询问“已安装的程序”并将其导出到tmp.txt
  2. 我想过滤tmp.txt并将结果放在另一个文本文档中。
  3. 但是有些不对劲。我没有得到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       
    

2 个答案:

答案 0 :(得分:1)

我建议你改变

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

:eof
move %txt% 1e-client
exit

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输出重定向到 {{1} (因为您使用的是txt重定向器create new,而不是>重定向器append

我建议

>>

...但我承认没有测试过。

答案 1 :(得分:1)

以下这一行有错误 - 你纠正了吗?

而不是这个

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

的第一行