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:
wenn ich das aber in eine zeile haben möchte habe ich mich eines batches bedient:
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 177735
Url: https://administrator.de/contentid/177735
Ausgedruckt am: 19.11.2024 um 15:11 Uhr
6 Kommentare
Neuester Kommentar
Aloha ähm ...
Wollen wir ihm nicht auch noch die Lösung erklären, bevor er fragt Warum, wo ist der Unterschied? ^__^
Ja, ich weiß - common sense aber mir war heute mal danach.
greetz André
P.S.: Ein Leerzeichen zwischen
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 einJa, 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
[OT] @skye
Grüße
b (nur zur Sicherheit )
[/OT]
bsatla
Na wenigstens Du kriegst die Augen weit genug auf ... Grüße
b (nur zur Sicherheit )
[/OT]
Hallo connecthor!
Noch eine Anmerkung: Vielleicht wäre Dir mehr geholfen, wenn Du "sigcheck.exe" mit dem Schalter "-v" verwendest - also etwa:
Grüße
bastla
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%"
(for /f "tokens=1,7,9 delims=," %%a in ('sigcheck.exe -h -q -v *.exe') do echo %%~a;%%~b;%%~c)>out.txt
bastla