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-Key: 177735

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

Printed on: April 26, 2024 at 02:04 o'clock

Member: bastla
bastla Dec 15, 2011 at 10:22:36 (UTC)
Goto Top
Hallo connecthor!

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

Grüße
bsatla
Member: Skyemugen
Skyemugen Dec 15, 2011 at 10:28:28 (UTC)
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
Member: bastla
bastla Dec 15, 2011 at 10:31:08 (UTC)
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]
Member: connecthor
connecthor Dec 15, 2011 at 11:06:32 (UTC)
Goto Top
*kopf>tastatur*

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

Thnx bastla
Member: connecthor
connecthor Dec 15, 2011 at 16:23:16 (UTC)
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
Member: bastla
bastla Dec 15, 2011 at 18:15:43 (UTC)
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