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-ID: 564584

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

Ausgedruckt am: 21.11.2024 um 23:11 Uhr

rubberman
Lösung rubberman 11.04.2020 um 11:58:16 Uhr
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
WMenzel
WMenzel 11.04.2020 um 12:05:17 Uhr
Goto Top
In einem Forum habe ich eine geniale Lösung gefunden:

dir %windir%\winhlp32.exe | find "winhlp"
Pfad + Dateiname Dateiname
WMenzel
WMenzel 11.04.2020 um 12:09:52 Uhr
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!