2017-07-17 16 views
0

各ユーザーのシステム情報とユーザー名/コンピュータ名を収集し、(ユーザーごとに作成された別々のファイルではなく)1つのログファイルに出力するWindowsバッチログインスクリプトを作成しようとしています。それは一つのファイルに出力、誰かがログオンするたびにsysteminfoの出力を持つログインスクリプト

systeminfo|find /i "original" >> \\share\sysinfo.log 
echo %username%-%computername% >>\\share\user.log 
type \\share\user.log > \\share\Results\systeminfo.log 
type \\share\sysinfo.log >> \\share\Results\systeminfo.log 

が、ユーザ名とシステム情報を分離されています。だから、私はこのような何かを行うために管理echo %username%-%computername% >> file.txtsysteminfo|find /i "original" >> file.txtのようなものを、必要とします。私は、例えば、別々の列に出力し、それらを必要とする:

Username-ComputerName Original Install Date 
Jo-PC1     17/16/2016, 09:14:34 
Dan-PC2     17/03/2015, 11:00:05 

答えて

0

スタックオーバーフローがライトコードのための-ME-サービスではないことに注意してください。とにかく、私は恥私question


@echo off 

setlocal enableextensions disabledelayedexpansion 
rem Prepare padding for two column 
set "Width=30" 
setlocal enabledelayedexpansion 
set "padding= " 
for /l %%a in (1 1 %Width%) do set "padding=!padding! " 
endlocal & set "padding=%padding%" 

rem return "Username-ComputerName Original Install Date" 
echo Username-ComputerName   Original Install Date>File.ext 

rem Prepate two files to store username-computerName and install date lists 
for %%d in ("%temp%\username-computerName.%random%%random%%random%.tmp") do (
for %%f in ("%temp%\installName.%random%%random%%random%.tmp") do (

    rem Retrieve the list of username-computerName and install date into the temp files 
    type user.log > "%%~fd" 2>nul 
    type date.log > "%%~ff" 2>nul 

    rem Assign each temporary file to a separate stream 
    rem and call the code to process them 
    9<"%%~fd" 8<"%%~ff" call :dumpPairs 

    rem Clean up temporary files 
) & del /q "%%~ff" 
) & del /q "%%~fd" 

rem All done, leave 
cls 
type File.ext 
pause 
goto :eof 


rem Read stream 9 to retrieve username-computerName - Clean var on failure 
rem Read stream 8 to retrieve install date - Clean var on failure 
rem If both variables are uninitialized, there is nothing more to do 
rem Concatenate both information and padding 
rem Echo the padded results 
rem Repeat the process 

:dumpPairs 
<&9 set /p "username-computerName=" || set "username-computerName=" 
<&8 set /p "installName="  || set "installName=" 
if not defined username-computerName if not defined installName goto :eof 

set "line=%username-computerName%%padding%" 
setlocal enabledelayedexpansion 
echo(!line:~0,%Width%! !installName!>>File.ext 
endlocal 

goto :dumpPairs 

にMC NDによってスクリプト(and edited)を盗んだ説明がすでにあるスクリプト内であるので、私はあまり説明しません。

  • 単純に2つのファイルに結果を得る
  • が一緒に

それらをエコー出力部は

rem All done, leave 
cls 
type File.ext 
pause 
goto :eof 

ので、あなたには、いくつかの調整が必要になることがあります。

関連する問題