anrion
Goto Top

Erklärung Batch

Hallo Leute,

Ich benötige Hilfe beim verstehen der Batch-Datei:

1 @echo off &setlocal
2 for /r %%i in (*.00s) do (
3 set /p "line="<"%%~i"
4 setlocal EnableDelayedExpansion
5 for /f "tokens=1*" %%j in ("!line!") do (
6 set "part=%%k"
7 for /f "delims=" %%l in ("!part:~,5!") do (
8 endlocal
9 set /a "Verfahren_%%l+=1"
10 )
11 )
12 )
13 >"Auftragslage.txt" (for /f "tokens=2 delims=_" %%i in ('set Verfahren_') do echo %%i)

Stefan

Content-ID: 311124

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

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

Kraemer
Kraemer 28.07.2016 um 14:34:31 Uhr
Goto Top
Moin,

fangen wir mal damit an, das es hier code-Tags gibt.

@echo off &setlocal
for /r %%i in (*.00s) do (
set /p "line="<"%%~i"  
setlocal EnableDelayedExpansion
for /f "tokens=1*" %%j in ("!line!") do (  
set "part=%%k"  
for /f "delims=" %%l in ("!part:~,5!") do (  
endlocal
set /a "Verfahren_%%l+=1"  
 )
 )
 )
 >"Auftragslage.txt" (for /f "tokens=2 delims=_" %%i in ('set Verfahren_') do echo %%i)  
Damit spart man sich schon einmal das manuelle Tippen der Zeilennummer.

Und welches Verständnisproblem hast du nun bei der Batch?

Gruß Krämer
Anrion
Anrion 28.07.2016 um 14:41:12 Uhr
Goto Top
Moin Krämer,

danke für die schnelle Rückmeldung!

Wenn ich ehrlich bin verstehe ich keine der Zeilen so richtig. Die For-Schleifen mit Ihrem set und was diese bewirken sind das große Problem, da ich z.B. nicht weiß, was mit ("!line!") .. gemeint ist.

Ich bin auch kein Programmierer etc., soll aber diese Batch verstehen und umformen. Sie ist zum abfragen von mehreren Dateien, wovon die 1. Zeile abgerufen werden soll. In dieser ist nach einer beliebigen Stelle ein Leerzeichen und ab da zählen die 5 folgenden Zeichen, welche dann zusammengezählt werden. Diese Batch funktioniert. Ich muss nun jedoch zu dieser eine neue Prüfart hinzufügen. Sie beinhaltet kein Leerzeichen zur Erkennung des Verfahrens, sondern ein @ an 21. Stelle. Die gesamte Prüfart geht dann von der 19. Stelle bis 26. Stelle inkl. @. Das @ ist in den Dateien, die die Batch oben prüft nicht enthalten.

mfG Stefan
rubberman
rubberman 28.07.2016 um 19:39:55 Uhr
Goto Top
Hallo Stefan, warum fragst du nicht den, der dir den Code dort geschrieben hat?

Grüße
rubberman (aka German)
timlg07
timlg07 21.08.2016 um 11:00:58 Uhr
Goto Top
Morgen Anrion,

!line! ist eigentlich erst mal das gleiche wie %line% nur dass die Variable so erst an der Stelle expandiert wird an der sie gebraucht wird. Das ist hier erforderlich, da die Variable sonst die ganze for Schleife gleich bliebe.
enabledelayedexpansion wird für das verzögerte Variablenexpandieren (also !line! etc ) gebraucht.

Für ein Anpassen der Datei wäre es gut zu wissen was genau gemacht werden soll, also welche Dateien vorhanden und was die gewünschten ausgaben sind. Würde mich dann da mal rann machen ;)

LG Tim
rubberman
rubberman 21.08.2016 um 18:44:54 Uhr
Goto Top
Hallo Tim

Dieser Thread ist grundsätzlich ein Crossposting. Folge doch mal meinem Link face-wink

Grüße
rubberman
timlg07
timlg07 21.08.2016 um 20:29:31 Uhr
Goto Top
Abend rubberman,

Habe mir den Eintrag hinter Deinem Link mal angesehen
und eigentlich ist die Frage dort ja schon gelöst worden.

Ich konnte aus den Beschreibungen jetzt schließen, dass in der ersten Zeile ein Code (mehrere Zeichen) versteckt ist und überprüft werden soll welcher das ist.
Wenn ich damit richtig liege und Anrion gerne eine neue oder alternative Lösung hätte, bastle ich da gern ein wenig rum. ;)

Grüße
Tim