2017-07-17 2 views
0

Ich versuche ein Windows-Batch-Login-Skript zu erstellen, das die Systeminformationen und Benutzernamen/Computername jedes Benutzers sammelt und es in einer Protokolldatei (anstatt einer separaten Datei für jeden Benutzer) ausgibt. Also brauche ich so etwas wie echo %username%-%computername% >> file.txt und systeminfo|find /i "original" >> file.txt, die ich mit so etwas zu tun verwaltet:Login-Skript mit der Ausgabe von 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 

Jedes Mal, wenn jemand anmeldet, es Ausgabe in eine Datei, aber der Benutzername und das system getrennt sind. Ich brauche sie zur Ausgabe in separate Spalten, zum Beispiel:

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

Antwort

0

Bitte beachten Sie, dass Stack-Überlauf ist keine Schreib Code-for-me-Dienste. Wie auch immer, ich stahl schändlich das Skript (and edited) von MC ND in meinem 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 

Die Erklärung ist bereits im Skript ist, so dass ich nicht viel erklären.

  • Setzen Sie sich einfach das Ergebnis in zwei Dateien
  • Echo sie zusammen

Der Ausgangsteil ist

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

so können Sie einige Anpassungen benötigen.

Verwandte Themen