2017-02-23 5 views
1

Ich muss diese beiden Batch-Dateien kombinieren. Die erste .bat-Datei erhält Informationen über die auf einem Computer installierte Version von Microsoft Office, die zweite erhält Informationen über den Computer und sendet sie an eine Datei im Netzwerk. Ich muss diese Dateien kombinieren, damit alle diese Informationen in die gleiche Datei im Netzwerk gelangen.Wie kombiniere ich diese zwei Batch-Dateien

Die erste .bat-Datei

setlocal enableDelayedExpansion 


for /f "tokens=2 delims==" %%O in ('ftype ^|findstr /r /I "\\OFFICE[0-9]*" 2^>nul') do ( 
    set "tokens=%%~O" 
goto END_TOKENS 
) 
:END_TOKENS 


for %%P in (%tokens%) do ( 
set "officePath=%%~dpP" 
for %%V in ("!officePath:~0,-1!") do ( 
set "officeVersion=%%~nV" 
goto END_OFFICEPATH 
) 
) 
:END_OFFICEPATH 


REM Check Office "Version" 
if "%officeVersion%" == "Office11" ( 
    echo Microsoft Office 2003 
) 
if "%officeVersion%" == "Office12" ( 
    echo Microsoft Office 2007 
) 
if "%officeVersion%" == "Office14" ( 
    echo Microsoft Office 2010 
) 
if "%officeVersion%" == "Office15" ( 
    echo Microsoft Office 2013 
) 


if "%officeVersion%" == "" ( 
    echo Microsoft Office is not installed 
    goto END 
) 


REM Check Office "Bitness" 
set keyName="HKLM\Software\WOW6432Node\Microsoft\Office" 
set valueName="" 


FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %keyName%`) DO ( 
    set valueName=%%A 
) 


if defined valueName ( 
    @echo Microsoft Office is 32-bit 
) else ( 
set keyName="HKLM\Software\Microsoft\Office" 
    set valueName="" 
    FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %keyName%`) DO ( 
    set valueName=%%A 
    ) 


    if defined valueName ( 
    @echo Microsoft Office is 64-bit 
    ) 
) 


:END 



endlocal 



echo Completed! Thank you! 

pause 

Die zweite .bat-Datei

@echo off 

net use Q: \\example\example 



(systeminfo | findstr /c:"Host Name" 

systeminfo | findstr /c:"Domain" 

ipconfig | findstr IPv4 

systeminfo | findstr /c:"System Manufacturer" 

systeminfo | findstr /c:"System Model" 

echo Service Tag: 
wmic bios get serialnumber 

systeminfo | findstr /c:"OS Name" 

systeminfo | findstr /c:"os version" 

systeminfo | findstr /c:"Total Physical Memory" 

systeminfo | findstr /c:"System type" 


echo %username%) > Q:\example\%computername%.txt 


net use Q: /delete 

echo Completed! Thank you! 
+0

'>' wird in eine neue Datei schreiben, während '>>' anhängen wird. Nachdem das gesagt wurde, könnte deine erste Fledermaus "...> toTheFile" und deine zweite Folge "... >> ToTheSameFile". Der Pfad der genannten 'Datei' könnte als Parameter in der Zeile cmd übergeben und mit der gewünschten Variante% 1 abgerufen werden. –

+2

Was hindert Sie daran, den Code von einem Skript in das andere zu kopieren und einzufügen? – Squashman

+0

^Das war die Idee, aber ich weiß nicht genug über Batch-Scripting, um es richtig funktionieren zu lassen :-) – JacobElliott

Antwort

0

Hier sind sie, kombiniert und arbeiten gemeinsam auf dem gleichen "Bericht" Datei in savePath definiert ..

setlocal enableDelayedExpansion 
set savePath="c:\temp\myfile.txt" 

for /f "tokens=2 delims==" %%O in ('ftype ^|findstr /r /I "\\OFFICE[0-9]*" 2^>nul') do ( 
    set "tokens=%%~O" 
goto END_TOKENS 
) 
:END_TOKENS 


for %%P in (%tokens%) do ( 
set "officePath=%%~dpP" 
for %%V in ("!officePath:~0,-1!") do ( 
set "officeVersion=%%~nV" 
goto END_OFFICEPATH 
) 
) 
:END_OFFICEPATH 


REM Check Office "Version" 
if "%officeVersion%" == "Office11" ( 
    echo Microsoft Office 2003 > %savePath% 
) 
if "%officeVersion%" == "Office12" ( 
    echo Microsoft Office 2007 > %savePath% 
) 
if "%officeVersion%" == "Office14" ( 
    echo Microsoft Office 2010 > %savePath% 
) 
if "%officeVersion%" == "Office15" ( 
    echo Microsoft Office 2013 > %savePath% 
) 


if "%officeVersion%" == "" ( 
    echo Microsoft Office is not installed > %savePath% 
    goto END 
) 


REM Check Office "Bitness" 
set keyName="HKLM\Software\WOW6432Node\Microsoft\Office" 
set valueName="" 


FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %keyName%`) DO ( 
    set valueName=%%A 
) 


if defined valueName ( 
    @echo Microsoft Office is 32-bit > %savePath% 
) else ( 
set keyName="HKLM\Software\Microsoft\Office" 
    set valueName="" 
    FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %keyName%`) DO ( 
    set valueName=%%A 
    ) 


    if defined valueName ( 
    @echo Microsoft Office is 64-bit > %savePath% 
    ) 
) 


:END 



endlocal 




net use Q: \\example\example 


(systeminfo | findstr /c:"Host Name" 

systeminfo | findstr /c:"Domain" 

ipconfig | findstr IPv4 

systeminfo | findstr /c:"System Manufacturer" 

systeminfo | findstr /c:"System Model" 

echo Service Tag: 
wmic bios get serialnumber 

systeminfo | findstr /c:"OS Name" 

systeminfo | findstr /c:"os version" 

systeminfo | findstr /c:"Total Physical Memory" 

systeminfo | findstr /c:"System type" 


echo %username%) >> %savePath% 


net use Q: /delete 

echo Completed! Thank you! 
Verwandte Themen