WinFuture-Forum.de: Ergebniss einer .log Datei weiterverarbeiten - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Ergebniss einer .log Datei weiterverarbeiten


#1 Mitglied ist offline   Lenni777 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 20. Juni 17
  • Reputation: 0

geschrieben 20. Juni 2017 - 07:36

Hallo zusammen,

gibt es eine möglichkeit das Ergebiss einer .log Datei weiter zu Verarbeiten ?

Hintergedanke des ganzen ist, das die Batch eine bestimmte Datei sucht und diese dann in ein anderes Verzeichniss ablegt.

Die Suche und Protokollierung funktioniert soweit.

Jetzt hängt es an der weiterverarbeitung !

@echo off & setlocal

:: Set variable for InputBox:
set myMessage=Bitte BA-Nummer eingeben !
set myTitle=Tool für Auftragsdaten
call :subInputBox

:: Display variable
if "%flag%"=="false" (
   set myMessage=Vorgang abgebrochen.
   set myTitle=Vorgang abgebrochen
   call :subMsgBox
) else (
   set %cmdText%
)
goto Search

:: Start subroutine subInputBox
:subInputBox
set VBS="%Temp%\vbsInputBox.vbs"
set CMD="%Temp%\cmdVar.bat"
 
>> %VBS% echo Option Explicit 
>> %VBS% echo Dim strText  
>> %VBS% echo Dim objShell : Set objShell = CreateObject("Wscript.Shell")  
>> %VBS% echo Dim objFSO   : Set objFSO = CreateObject("Scripting.FileSystemObject") 
>> %VBS% echo Dim objFile  : Set objFile = objFSO.CreateTextFile(%CMD%) 
:: Pass variable from batch to VBScript
>> %VBS% echo strText = InputBox("%myMessage%", "%myTitle%")
>> %VBS% echo if strText = vbNullString then 
:: Create batch file
>> %VBS% echo objFile.WriteLine "@echo off"
>> %VBS% echo objFile.WriteLine "set flag=false" 
>> %VBS% echo else 
>> %VBS% echo objFile.WriteLine "@echo off"
:: Set variable in batch file
>> %VBS% echo objFile.WriteLine "set cmdText=" ^& strText  
>> %VBS% echo end if 
>> %VBS% echo objFile.Close  
 
cscript %VBS% > NUL
call %CMD% > NUL
 
del %CMD%
del %VBS%
 
goto :EOF
:: End subroutine subInputBox

:: Start subroutine subMsgBox
:subMsgBox
>> %Temp%\MsgBox.vbs echo MsgBox "%myMessage%", VbInformation + VbOKOnly, "%myTitle%" 
cscript %Temp%\MsgBox.vbs > NUL
del %Temp%\MsgBox.vbs
goto :EOF
:: End of subroutine subMsgBox

:Search
set "SrcDir=J:\Produktiv\Public\Auftraege\Eingang"
set "FileType=txt"
set "SearchKey=%cmdText%"
set "LogFile=Protokoll.log"
REM Das Ergebniss steht in der .log Datei

(for %%f in ("%SrcDir%\*.%FileType%") do (
 type "%%~f" | findstr /c:"%SearchKey%" > NUL && ( 
  echo %%~f 
   ) 
)) > "%LogFile%"


0

Anzeige



#2 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 20. Juni 2017 - 08:04

Was vertehst Du unter weiterverarbeiten?
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#3 Mitglied ist offline   Lenni777 

  • Gruppe: Mitglieder
  • Beiträge: 2
  • Beigetreten: 20. Juni 17
  • Reputation: 0

geschrieben 20. Juni 2017 - 08:20

Ich möchte die gefundene Datei, die in der log. steht in ein anderes Verzeichniss kopieren.
0

#4 Mitglied ist offline   Holger_N 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.111
  • Beigetreten: 11. September 10
  • Reputation: 458
  • Geschlecht:Männlich

geschrieben 20. Juni 2017 - 08:39

Ich kenne mich mit Batch nicht so aus, aber da wird es doch wohl einen copy-Befehl geben.
Bauernregel: Regnets mächtig im April, passiert irgendwas, was sich auf April reimt.
0

#5 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 20. Juni 2017 - 09:18

Warum batch, wenn doch schon der WSH verwendet wird? Bleib doch einfach beim WSH. Oder PowerShell; letztlich vom Ansatz her dasselbe.

Mit batch geht eh zuviel zu umständlich, was man mit WSH & Co einfacher haben kann.


Das ist auch viel zu komplex. Soll da eine Batchdatei ein VBScript generieren, welches selbst wieder eine Batchdatei generiert? So sieht es jedenfalls aus. Warum denn das?

Einfach ein Dateisystemobjekt aufmachen, einen Ordner darin referenzieren, sämtliche Dateien darin auflisten und die dann eine nach dem anderen nach einem Zielmuster durchforsten. (Ich geh mal davon aus, daß die bewußte Logdatei ausreichend strukturiert ist. "Dateiname steht in der dritten Zeile" oder "fünften Spalte" oder "wird mit file= eingeleitet" läßt sich besser isolieren als wie wenn man eine kontinuierlich geschriebene Logdatei hatte, wo der bewußte Dateiname irgendwo alleine irgendwo rumsteht und man das nicht vom restlichen Dateiinhalt unterscheiden kann.

Wenn man den Dateinamen dann hat, einfach kopieren.

PowerShell wäre hier einfacher, weil das wie batch direkt ans OS angebunden ist und man direkten Zugriff auf die Dateisystemobjekte hat. Aber dem Codeblock oben zu urteilen wäre VBScript die sinnvollere Wahl.


Referenz für das Dateisystemobjekt, so wie es extensiv benötigt werden wird, gibt's bei Microsoft in der MSDN unter "FileSystemObject" (nicht auf WSH beschränkt).
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0