2017-02-23 7 views
1

これら2つのバッチファイルを結合する必要があります。最初の.batファイルは、コンピュータにインストールされているMicrosoft Officeのバージョンに関する情報を取得し、2番目のファイルはコンピュータに関する情報を取得し、ネットワーク上のファイルに送信します。これらのファイルを組み合わせて、この情報がすべてネットワーク上の同じファイルに書き込まれるようにする必要があります。これら2つのバッチファイルを結合するには

最初の.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'で、2番目のバッチは' '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! 
関連する問題