2017-02-23 69 views
1

我需要合併這兩個批處理文件。第一個.bat文件獲取有關計算機上安裝的Microsoft Office版本的信息,第二個獲取有關該計算機的信息並將其發送到網絡上的文件。我需要組合這些文件,以便所有這些信息都進入網絡中的相同文件。如何合併這兩個批處理文件

第一個.bat文件

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 

第二.bat文件

@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

'>'會寫入一個新文件,而'>>'會追加。說了這麼多,你的第一隻蝙蝠可以'... toTheFile',而你的第二隻蝙蝠'... ToTheSameFile'。所述'file'的路徑可以作爲cmd行參數傳遞,並使用'%1'所需的風格進行檢索。 –

+2

什麼是阻止您將代碼從一個腳本複製並粘貼到另一個腳本? – Squashman

+0

^這是想法,但我不太瞭解批處理腳本,使其正常工作:-) – JacobElliott

回答

0

這裏,他們是組合並朝着savePath定義相同的 「報告」 的文件一起工作..

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!