connecthor
Goto Top

Txt zeilenweise per batch sortieren

guten morgen zusammen,

ich komm einfach nicht weiter...

ich soll die versionsnummern von exedateien auf unseren systemen auslesen und vergleichen.

dafür benutze ich das sysinternalstool sigcheck.

soweit hab ich das schon sortiertbekommen, dass ich den dateinamen und die versionsnummer ausgegeben bekomme und in eine datei schreiben lasse. leider stehen die werte untereinander.

siehe hier:
c:\windows\certutil.exe:
	MD5:	711db2ef10b6c2ab2080698aec6c6d08
c:\windows\explorer.exe:
	MD5:	418045a93cd87a352098ab7dabe1b53e
c:\windows\hh.exe:
	MD5:	4ba83377214a999fbc9511604a924f9e
c:\windows\NOTEPAD.EXE:
	MD5:	8a29b5b5a881c6709f31ff5203f0fac9
c:\windows\regedit.exe:
	MD5:	ad9226bf3ced13636083bb9c76e9d2a2
c:\windows\robocopy.exe:
	MD5:	592be1ad0ed83c36d5e68ca7a014a510
c:\windows\TASKMAN.EXE:
	MD5:	3a0c664583a0ba6c34fab808e9021798
c:\windows\twunk_16.exe:
	MD5:	f36a271706edd23c94956afb56981184
c:\windows\twunk_32.exe:
	MD5:	397224accbc4f63f3ea519af8bf132e1
c:\windows\winhelp.exe:
	MD5:	c07e0c0d0c5ef4c6bea0dbd829700703
c:\windows\winhlp32.exe:
	MD5:	a4d255a9b266ed094124e6cd7e5ee0ea
c:\windows\xcacls.exe:
	MD5:	64e4a4603752801be14dc6647dd6b167

wenn ich das aber in eine zeile haben möchte habe ich mich eines batches bedient:

--- sort.cmd ---
@echo off & setlocal enabledelayedexpansion
Set "q=c:\test\in.txt"  
@for /f "delims=: tokens=1,*" %%i in ('findstr /n $ "%q%"^|findstr "c:"') do @(   
 for /f %%x in ('set /a %%i+1') do @(   
 For /f "tokens=1,* delims=:" %%y in ('findstr /n $ "%q%"^|findstr "%%x:"') do @echo %%j %%z > out.txt ))  

leider gibt er mir nur die letzte zeile sortiert aus. ich denke ich hab nur ein was vergessen, aber was??

vielen dank für´s mal drüber schauen

Connecthor

Content-ID: 177735

Url: https://administrator.de/contentid/177735

Ausgedruckt am: 19.11.2024 um 15:11 Uhr

bastla
bastla 15.12.2011 um 11:22:36 Uhr
Goto Top
Hallo connecthor!

Wird's besser, wenn Du in Zeile 6 ">>" anstelle von ">" verwendest?

Grüße
bsatla
Skyemugen
Skyemugen 15.12.2011 um 11:28:28 Uhr
Goto Top
Aloha ähm ...
bsatla
? *gg*

Wollen wir ihm nicht auch noch die Lösung erklären, bevor er fragt Warum, wo ist der Unterschied? ^__^

> überschreibt vorhandenen Inhalt mit neuem Inhalt
>> fügt neuen Inhalt hinter vorhandenem Inhalt ein

Ja, ich weiß - common sense aber mir war heute mal danach.

greetz André

P.S.: Ein Leerzeichen zwischen Inhalt und >> = ein Leerzeichen am Ende der eingefügten Zeile in der Textdatei face-wink
bastla
bastla 15.12.2011 um 11:31:08 Uhr
Goto Top
[OT] @skye
bsatla
Na wenigstens Du kriegst die Augen weit genug auf ... face-wink

Grüße
b (nur zur Sicherheit face-wink)
[/OT]
connecthor
connecthor 15.12.2011 um 12:06:32 Uhr
Goto Top
*kopf>tastatur*

anmerkung an mich... weg vom entkoffenierten kaffee -> arzt wechseln!!!

Thnx bastla
connecthor
connecthor 15.12.2011 um 17:23:16 Uhr
Goto Top
nur noch eins...
nach dem testen fiel mir auf, das nun der wer aus der ersten zeile durch die hochzählung gleich bleibt, aber fder wert aus der zweiten sich ändert, ergebniss wie folgt:

c:\windows\certutil.exe: 	MD5:	711db2ef10b6c2ab2080698aec6c6d08  
c:\windows\certutil.exe: 	MD5:	592be1ad0ed83c36d5e68ca7a014a510  
c:\windows\certutil.exe: 	MD5:	a4d255a9b266ed094124e6cd7e5ee0ea  
c:\windows\explorer.exe: 	MD5:	418045a93cd87a352098ab7dabe1b53e  
c:\windows\explorer.exe: 	MD5:	3a0c664583a0ba6c34fab808e9021798  
c:\windows\explorer.exe: 	MD5:	64e4a4603752801be14dc6647dd6b167  
c:\windows\hh.exe: 	MD5:	4ba83377214a999fbc9511604a924f9e  
c:\windows\hh.exe: 	MD5:	f36a271706edd23c94956afb56981184  
c:\windows\NOTEPAD.EXE: 	MD5:	8a29b5b5a881c6709f31ff5203f0fac9  
c:\windows\NOTEPAD.EXE: 	MD5:	397224accbc4f63f3ea519af8bf132e1  
c:\windows\regedit.exe: 	MD5:	ad9226bf3ced13636083bb9c76e9d2a2

stimmt ja da so dann nicht, änderung:
 @for /f "delims= tokens=1,*" %%i in ('findstr /n $ "%q%"^|findstr "c:"') do @( For /f "tokens=1,* delims=" %%y in ('findstr /n $ "%q%"^|findstr "MD5"') do @echo %%j %%z >> out.txt)  

ergebniss -> keine ausgabe.

wo liegt der fehler?

danke
bastla
bastla 15.12.2011 um 19:15:43 Uhr
Goto Top
Hallo connecthor!
wo liegt der fehler?
Das kann ich zwar im Moment nicht beantworten, aber ich könnte einen alternativen Batch anbieten:
@echo off & setlocal enabledelayedexpansion
set "q=c:\test\in.txt"  
set "z=c:\test\out.txt"  

set "L="  
(for /f "usebackq delims=" %%i in ("%q%") do (  
    if defined L (
        echo !L! %%i
        set "L="  
    ) else (
        set "L=%%i"  
    )
))>"%z%"  
Noch eine Anmerkung: Vielleicht wäre Dir mehr geholfen, wenn Du "sigcheck.exe" mit dem Schalter "-v" verwendest - also etwa:
(for /f "tokens=1,7,9 delims=," %%a in ('sigcheck.exe -h -q -v *.exe') do echo %%~a;%%~b;%%~c)>out.txt
Grüße
bastla