wmenzel
Goto Top

Ein bestimmte Zeile eines DIR-Befehls in Batch-Script mit ECHO anzeigen

Guten Morgen

In Windows 10 Pro 64-Bit deutsch gibt in einer Batch-/CMD-Datei der Befehl DIR %WINDIR%\winhlp32.exe im Fenster Eingabeaufforderung (inlusive Leerzeilen) 8 Zeilen aus.
Um 2 Dateien mit gleichem Namen bezüglich Datum, Uhrzeit und Dateigröße am Bildschirm (im Fenster Eingabeaufforderung) vergleichen zu können, darf nur die Zeile 6 (die mit Datum, Uhrzeit und Dateigröße) im Fenster Eingabeaufforderung angezeigt werden.

Mit
@echo off
cls
FOR /F "skip=4 delims=" %%i IN ('dir %WINDIR%\winhlp32.exe') do echo %%i
Werden 2 Zeilen zu viel angezeigt.

Mit "& goto WEITER" kann ich nach dem Auslesen der gewünschten Zeile aus der FOR-Schleife "herausspringen".
Aber ich muss für jede einzelne Abfrage eine individuelle EINMALIGE "Aussprungmarke" erstellen.
Da ich in dem Batch-Script den Dateien-Vergleich mehrfach habe, ist das eine sehr große Fehlerquelle.

FOR /F "skip=4 delims=" %%i IN ('dir %WINDIR%\winhlp32.exe') do echo %%i & goto WEITER1
:WEITER1
FOR /F "skip=4 delims=" %%i IN ('dir <AnderesVerzeichnis>\winhlp32.exe') do echo %%i & goto WEITER2
:WEITER2
...


Frage1:
Wie kann ich die FOR-Schleife nach dem Auslesen der ganzen Zeile (die mit Datum, Uhrzeit und Dateigröße) ohne goto beendet?

Frage2:
Gibt es eine Batch-Lösung ohne FOR-Schleife?


Im Voraus herzlichen Dank.

Viele österliche Grüße

Content-Key: 564584

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

Printed on: May 3, 2024 at 07:05 o'clock

Member: rubberman
Solution rubberman Apr 11, 2020 at 09:58:16 (UTC)
Goto Top
Um deine Frage zu beantworten - filtere doch einfach die Zeile raus, die du benötigst. Etwa
for /f "delims=" %%i in ('dir %WINDIR%\winhlp32.exe^|find /i "winhlp32.exe"') do echo %%i

Ich frage mich aber, warum du die DIR Ausgabe verarbeitest, statt die Modifikatoren der FOR Variablen zu nutzen. Bspw.
for %%i in ("%WINDIR%\winhlp32.exe") do (  
  echo time %%~ti
  echo size %%~zi
)

Steffen
Member: WMenzel
WMenzel Apr 11, 2020 at 10:05:17 (UTC)
Goto Top
In einem Forum habe ich eine geniale Lösung gefunden:

dir %windir%\winhlp32.exe | find "winhlp"
Pfad + Dateiname Dateiname
Member: WMenzel
WMenzel Apr 11, 2020 at 10:09:52 (UTC)
Goto Top
Hallo rubberman,

vielen Dank für deine Lösung.

Nach langer Suche habe ich in einem Forum eine verblüffend einfache Lösung gefunden.

dir %windir%\winhlp32.exe | find "winhlp"
Pfad + Dateiname Dateiname

Nochmals vielen Dank für deine Lösung!