@echo off setlocal EnableDelayedExpansion EnableExtensions rem Beschreibung: rem rem Info zur Version: rem Datum Wer Info rem 21.04.2009 J.Fes Stand des Basisscriptes rem #Datum# J.Fes Ersterstellung rem set CmdCurRoot_DP=%~dp0 rem set CmdCurRoot_DP=%CmdCurRoot_DP:~0,-1% rem more Infos: http://ss64.com/nt/ rem Print in CMD ohne Zeilenumbruch Echo. rem set /p=Startecho %errorlevel% rem strip '"' rem set ItemName=%ItemName:"=% rem Replace ] durch _ rem set ObjectNamedId=%ObjectNamedId:]=_% rem set /P test="bitte eingeben: " Eingabe rem Alternative eingaben rem CHOICE.com /N /C:TMEQHS12I3456KL78PGXYZ9OR waehle Funktion: rem CHOICE.com /N /C:TMEQHS12I3456KL78PGXYZ9OR /T:q,10 waehle Funktion (q in 10 sec): rem wait.com %TimeToWaitNextCheck% rem Example: Liste durchlaufen via for schleife rem set GroupList=Gruppe1;Gruppe2;Gruppe3;Gruppe4 rem for /d %%i in (ELE1 ELE2 ELE3;ELE4) do Echo %%i Rem Example: Liste von Nummern durchlaufen REM for /L %%i IN (1,1,250) DO cechow.exe --%%i& Echo %%i rem bestimmtes Element aus Liste extrahieren Im Beispiel wird MyVar=ELE2 da tokens=2 angegeben ist rem FOR /F "tokens=2 delims=;" %%i IN ("ELE1;ELE2") do set MyVar=%%i& Echo MyVar=%%i rem execute prog anlyse cmd output REM for /f "delims=" %%a in ('type myFile.txt') do Echo %%a rem Dir befehl ausführen und Error message auf EnvVariable übergeben REm for /F "tokens=*" %%i IN ('Dir "%Dest_DP%" 2^>^&1') DO set DirErrMsg=%%i rem lesen aller Zeilen in Datei = JobObjectsPacketAllDetails_DPNE rem durch eol=; werden alle Zeilen die mit ; beginnen übersprungen rem Hinweise: die 1. Zeile ist mit ; gekenzeichnet da diese den Spaltenkopf darstellt diese wird übersprungen durch eol=; rem eine Spalte die mit " " aus den Original Daten kommen werden mit "~~~" ausgegeben rem FOR /F "eol=; skip=1 tokens=6,9,18 delims=;" %%i in (%JobObjectsPacketAllDetails_DPNE%) do call :RunCommandsOnObjects %%i %%j %%k rem notepad "%JobObjectsPacketAllDetails_DPNE%" rem ItemName-C01;RevName-C02;IrName-C03;IrNameCLI-C04;Id-C05;ObjectName-C06;ObjectFromSiteID-C07;ObjectClass-C08;ObjectType-C09;ObjectNamedId-C10;ObjectOwningSiteID-C11;ObjectOwner-C12;ObjectGroup-C13;ObjectCreateDate-C14;ObjectLastModUser-C15;ObjectLastModDate-C16;ObjectSelectByMarker-C17;ObjectUgMaster_Type-C18;ObjectUgMaster_CompCount-C19;ObjectUgMaster_FsHitCount-C20;ObjectFs_DPNE-C21;ObjectFs_Vol-C22;ObjectFs_NE-C23;ObjectUgMaster_PartFamMemName-C24;ObjectNote-C25;ProcStateCol01-C26;ProcStateCol02-C27;ProcStateCol03-C28;ProcStateCol04-C29;ProcStateCol05-C30;ProcStateCol06-C31;ProcStateCol07-C32;ProcStateCol08-C33;ProcStateCol09-C34;ProcStateCol10-C35 rem 32211045;0;32211045/0;@DB/32211045/0;e06623de-3d39-410c-804f-9f25c7ec2993;32211045-0;im9t;DS;UGMASTER;@DB/32211045/0/master/32211045-0;im9t;fktgaug;ktd;30.06.2005 09:12:00;fktgaug;30.06.2005 09:12:00;~~~;AP;-1;0;\\W7\volume_im9t$\vol_iman_ft3\fktgaug_41a352a9\32211045_0_ugp_42c3b746.prt;vol_iman_ft3;32211045_0_ugp_42c3b746.prt;~~~;~~~;M;N;N;N;N;N;N;N;N;N rem pause rem Hinweis skip nur einsetzen wenn skip min 1 rem FOR /F "skip=1 tokens=1,2,9,10,13,18,22 delims=;" %%i in (%JobObjectsPacketAllDetails_DPNE%) do call :RunCommandsOnObjects "%%i" "%%j" "%%k" "%%l" "%%m" "%%n" "%%o" rem Example: Liste mit for durchlaufen rem set Liste=1;2;3;"3 XXX" rem for /d %%i in (%Liste%) do Echo %%i rem Example: alle Zeilen einer Datei durchlaufen rem FOR /F "delims=" %%i in (%JobObjectsPacketAllDetails_DPNE%) do call :RunCommandsOnObjects "%%i" REM :RunCommandsOnObjects REM REM rem -- parsen der Eigenschaften aus den uebergebenen ObjectDaten REM REM rem vorne und hinten " abscheiden REM set ObjectInfoLine01=%1 REM set ObjectInfoLine01=%ObjectInfoLine01:~1,-1% REM REM rem Objektdaten extrahieren nach dem 31 ";" REM FOR /F "tokens=31,* delims=;" %%i IN ("%ObjectInfoLine01%") do set ObjectInfoLine32=%%j REM REM FOR /F "tokens=1 delims=;" %%i IN ("%ObjectInfoLine01%") do set ItemName=%%i REM FOR /F "tokens=2 delims=;" %%i IN ("%ObjectInfoLine01%") do set RevName=%%i REM FOR /F "tokens=4 delims=;" %%i IN ("%ObjectInfoLine01%") do set IrCliName=%%i REM goto :eof rem Example: Dateien auflisten rem Listen der Dateien beginend ab Verzeichnis rem for /R "D:\I" %%i in (*.*) Do Echo File_DPNE: %%i rem for /R "D:\I" %%i in (4711.xml,4713.xml) Do Echo File_DPNE: %%i rem Listen der Verzeichnise beginend ab Verzeichnis rem for /R "D:\I" %%i in (.) Do Echo Dir_DP: %%i rem strip '"' rem set ItemName=%ItemName:"=% rem Replace ; durch _ rem set ObjectNamedId=%ObjectNamedId:;=_% rem ##### ---------------- Standard Subroutines ------------------------- ###### rem ============================================================================ :DateTimeNowGet rem call :DateTimeNowGet rem Set File_LPNE=%DatRoot_DP%\MyName-%DateTimeNowFileExt%.txt if "%time:~0,1%"==" " set time-h=0%time:~1,1% if not "%time:~0,1%"==" " set time-h=%time:~0,2% if "%time:~3,1%"==" " set time-m=0%time:~4,1% if not "%time:~3,1%"==" " set time-m=%time:~3,2% set Date-Y=%Date:~-4,4% set Date-M=%Date:~-7,2% set Date-D=%Date:~-10,2% set DateTimeNowFileExt=%Date-Y%-%Date-M%-%Date-D%-%time-h%-%time-m% goto :eof rem ============================================================================ :Wait set waitTime=2 if not "%1"=="" set waitTime=%1 CHOICE.exe /C:w /N /T:w,%waitTime% "warte %waitTime%[sec] oder [w] fuer weiter druecken: " goto :eof :Parse_Absolut_DP set Parse_Absolut_DP$$Tmp=%~dp2 set %1=%Parse_Absolut_DP$$Tmp:~0,-1% set Parse_Absolut_DP$$Tmp= goto :eof rem ============================================================================ :Parse_All rem parst alle File Bezeichner aus rem "\" abschneiden set Parse_all$temp=%~dp1 set Parse_all$temp=%Parse_all$temp:~0,-1% call :Parse_PLast %Parse_all$temp% %2_PLast %2_PLast2 call :Parse_PathCutLastDir %~dp0 %2_DPnoPLast set %2_DP=%Parse_all$temp% set %2_D=%~d1 rem "\" hinten und vorne abschneiden set Parse_all$temp=%~p1 set Parse_all$temp=%Parse_all$temp:~1,-1% set %2_P=%Parse_all$temp% set %2_NE=%~nx1 set %2_N=%~n1 set %2_E=%~x1 set %2_DPNE=%~1 set %2_DPN=%~dpn1 set Parse_all$temp= goto :eof :Parse_PLast rem parst den LetzenPath set %2=%~n1 set %3=%~nx1 goto :eof :Parse_PathCutLastDir rem schneidet das letzte Verzeichniss Uebergeben path ab rem P1 = Name der Variablen rem P2 = der Übergebene Path rem Example : call :PathCutLastDir "%~dp0" MyVar_DP set PathCutLastDir$temp=%~1 set PathCutLastDir$tempLastChar=%PathCutLastDir$temp:~-1% set PathCutLastDir$tempNoBacks=%PathCutLastDir$temp:~0,-1% if "%PathCutLastDir$tempLastChar%"=="\" ( rem "\" abschneiden wenn vorhanden call :PathCutLastDirDo PathCutLastDir$tempRes %PathCutLastDir$tempNoBacks% ) else ( rem call :PathCutLastDirDo PathCutLastDir$tempRes %PathCutLastDir$temp% ) set PathCutLastDir$tempRes=%PathCutLastDir$tempRes:~0,-1% set %2=%PathCutLastDir$tempRes% set PathCutLastDir$temp= set PathCutLastDirDo$temp1= set PathCutLastDir$tempNoBacks= set PathCutLastDir$tempNoLastChar= set PathCutLastDir$tempLastChar= set PathCutLastDir$tempRes= goto :eof :PathCutLastDirDo rem hiermit schneiden wir den Path ab rem echo. rem Echo P1=%1 P2=%2 set PathCutLastDirDo$temp=%~dp2 rem "\" abschneiden set PathCutLastDirDo$temp1=%PathCutLastDir$temp:~0,-1% set %1=%PathCutLastDirDo$temp% set PathCutLastDirDo$temp= set PathCutLastDirDo$temp1= goto :eof rem ============================================================================ :Echo rem Echos Text auf die Console und in eine Datei (wenn angegeben) setlocal set TextToEcho=%1 set TextToEcho=%TextToEcho:"=% set EchoToFile_DPNE=%2 set EchoToFile_DPNE=%EchoToFile_DPNE:"=% if "%EchoToFile_DPNE%"=="=" set EchoToFile_DPNE= rem - Ausgabe Console if NOT "%TextToEcho%"=="." Echo %TextToEcho% if "%TextToEcho%"=="." Echo. rem - Ausgabe in File if "%EchoToFile_DPNE%"=="" goto :EchoEnd if NOT "%TextToEcho%"=="." Echo %TextToEcho% >>"%EchoToFile_DPNE%" if "%TextToEcho%"=="." Echo.>>"%EchoToFile_DPNE%" :EchoEnd endlocal goto :eof rem ============================================================================ :ColorSet REM Examples: REM call :ColorSet IsExecuting REM call :ColorSet IsIdel REM call :ColorSet End REM call :ColorSet Ende REM call :ColorSet Ok REM call :ColorSet Err rem -- cmd Color Farbinfo: REM 0 = Schwarz 8 = Dunkelgrau REM 1 = Dunkelblau 9 = Blau REM 2 = Dunkelgrün A = Grün REM 3 = Blaugrün B = Zyan REM 4 = Dunkelrot C = Rot REM 5 = Lila D = Magenta REM 6 = Ocker E = Gelb REM 7 = Hellgrau F = Weiß rem -- Farben nach Status setzen rem Gelb Schwarz if /I "%~1" equ "IsExecuting" set JobColorLast=E0 rem Blaugrün Schwarz 15.11.2010 07:45 Hellgrau Schwarz if /I "%~1" equ "IsIdel" set JobColorLast=70 rem Hellgrau Schwarz if /I "%~1" equ "End" set JobColorLast=70 if /I "%~1" equ "Ende" set JobColorLast=70 rem Gruen Schwarz if /I "%~1" equ "Ok" set JobColorLast=A0 rem Rot Schwarz if /I "%~1" equ "Err" set JobColorLast=C0 rem jetzt die Farbe setzen if not "%JobColorLast%"=="" color %JobColorLast% goto :eof