haberl92
Goto Top

Findstr als Variable - CMD

Hallo,

ich bin Neuling bei "findstr".
Ich schaffe es, dass ich mit findstr eine Zahlenfolge aus einer txt finde, aber er gibt mir das nur in der Console aus, aber ich kann damit nichts weiter machen.

Ich möchte den gefundenen String als Variable haben um ihn weiter zu bearbeiten.

@echo off
color 70
echo ------- Recherche -------
:start

echo.
echo.
echo IRN eingeben...
set /p IRN=

findstr %IRN% "W:\FAP Logistik 2-3\VSA_Sortfiles\*.txt"   
echo.
findstr %IRN% "C:\Temp\Part_1\*.txt"  
findstr %IRN% "C:\Temp\Part_2\*.txt"  
findstr %IRN% "C:\Temp\Part_3\*.txt"  
findstr %IRN% "C:\Temp\Part_4\*.txt"  
findstr %IRN% "C:\Temp\Part_5\*.txt"  
findstr %IRN% "C:\Temp\Part_6\*.txt"  
findstr %IRN% "C:\Temp\Part_7\*.txt"  
findstr %IRN% "C:\Temp\Part_8\*.txt"  
findstr %IRN% "C:\Temp\Part_9\*.txt"  
findstr %IRN% "C:\Temp\Part_10\*.txt"  
findstr %IRN% "C:\Temp\Part_11\*.txt"  
findstr %IRN% "C:\Temp\Part_12\*.txt"  
findstr %IRN% "C:\Temp\Part_13\*.txt"  
findstr %IRN% "C:\Temp\Part_14\*.txt"  
findstr %IRN% "C:\Temp\Part_15\*.txt"  
findstr %IRN% "C:\Temp\Part_16\*.txt"  
findstr %IRN% "C:\Temp\Part_17\*.txt"  
findstr %IRN% "C:\Temp\Part_18\*.txt"  
findstr %IRN% "C:\Temp\Part_19\*.txt"  
findstr %IRN% "C:\Temp\Part_20\*.txt"  
  
goto start



Wahrscheinlich ist das für euch eine Lapalie, aber ich habe schon viele Foren durchsucht und vieles getestet, jedoch ohne Erfolg

Content-ID: 1062978741

Url: https://administrator.de/forum/findstr-als-variable-cmd-1062978741.html

Ausgedruckt am: 22.12.2024 um 21:12 Uhr

PeterPanter
PeterPanter 21.07.2021 um 08:00:36 Uhr
Goto Top
Moin

FOR /F %%i IN ('findstr %IRN% "C:\Temp\Part_1\*.txt"') DO set MeineVariable=%%i  

Wenn dein Suchbegriff mehrfach gefunden wird, steht aber nur der letzte Eintrag in der Variable.
/pp
Haberl92
Haberl92 21.07.2021 um 12:22:35 Uhr
Goto Top
da ist das Problem.
ich weiß, dass der Suchbegriff 4 mal in den Dateien vertreten ist und ich möchte jeweils die komplette Zeile als separate Variable.
Und wenn es möglich ist den Dateinamen, in der der Suchbegriff steht, auch zu der jeweiligen Variable.
149062
Lösung 149062 21.07.2021 aktualisiert um 12:37:28 Uhr
Goto Top
Zitat von @Haberl92:

da ist das Problem.
ich weiß, dass der Suchbegriff 4 mal in den Dateien vertreten ist und ich möchte jeweils die komplette Zeile als separate Variable.
Und wenn es möglich ist den Dateinamen, in der der Suchbegriff steht, auch zu der jeweiligen Variable.
Einfach in der Schleife direkt weiterverarbeiten face-wink.
@echo off
for /f "tokens=1,2,* delims=:" %%a in ('findstr /ilc:"%IRN%" "C:\Temp\Part_1\*.txt"') do (  
    echo Dateiname: %%a:%%b
    echo Zeileninhalt: %%c
)
Extra einzelne Variablen mit Counter zu erstellen macht man bei sowas in der Regel nicht, aber wenn du das unbedingt willst geht auch das
@echo off & setlocal enabledelayedexpansion
set cnt=1
for /f "tokens=1,2,* delims=:" %%a in ('findstr /ilc:"%IRN%" "C:\Temp\Part_1\*.txt"') do (  
    set "Dateiname!cnt!=%%a:%%b"  
    set "Zeileninhalt!cnt!=%%c"  
    set /a cnt+=1
)
echo %Dateiname1%
echo %Zeileninhalt1%
echo %Dateiname2%
echo %Zeileninhalt2%
REM usw.

Mal lesen
Tutorial zur FOR-Schleife

Aber mal ehrlich, immer noch Batch?? Sowas fackelt man heutzutage in null komma nix in Powershell ab wenn's ne Windose ist.
TK1987
TK1987 21.07.2021 um 12:45:50 Uhr
Goto Top
Moin,

Zitat von @Haberl92:

da ist das Problem.
ich weiß, dass der Suchbegriff 4 mal in den Dateien vertreten ist und ich möchte jeweils die komplette Zeile als separate Variable.
Und wenn es möglich ist den Dateinamen, in der der Suchbegriff steht, auch zu der jeweiligen Variable.
dann lass CMD endlich in frieden ruhen und nimm zeitgemäß Powershell, da ist das Ganze ein klacks

# Quellordner
$Source = "C:\Test"  

# Abfrage der IRN
$IRN = Read-Host "IRN eingeben"  

# Alle TXT-Dateien im Quellordner auflisten
$TXT = Get-ChildItem -Recurse "$Source\*.txt"  

# IRN in TXT-Dateien suchen
$Result = Select-String -SimpleMatch $IRN -Path $TXT

# Mache was auch immer mit dem Ergebnis, hier: Dateiname und Trefferzeile auf der Console ausgeben
$Result | Select Filename,Line

Powershell Leitfaden für Anfänger

Gruß Thomas
PeterPanter
PeterPanter 21.07.2021 um 13:33:04 Uhr
Goto Top
Zitat von @Haberl92:
Ich schaffe es, dass ich mit findstr eine Zahlenfolge ...
ich weiß, dass der Suchbegriff 4 mal in den Dateien vertreten ist ...
Das ist natürlich was anderes (1!=4 face-smile). Aber du hast ja prima Lösungen von @149062 und @TK1987
/pp
Haberl92
Haberl92 21.07.2021 um 22:47:52 Uhr
Goto Top
Vielen Dank für die Vorschläge.
Ich werde alles morgen mal testen.
Zu dem Thema "Warum nicht Powershell": Ich bin mit Powershell noch sehr wenig vertraut, aber mit CMD weiß ich doch bei weiten mehr (aber eben auch nicht alles)
TK1987
TK1987 22.07.2021 um 01:43:05 Uhr
Goto Top
Zu dem Thema "Warum nicht Powershell": Ich bin mit Powershell noch sehr wenig vertraut, aber mit CMD weiß ich doch bei weiten mehr (aber eben auch nicht alles)
Diesen Fehler begehen hier leider sehr viele.
Powershell ist viel leichter und schneller zu erlernen als CMD, bietet nahezu unbegrenzte Möglichkeiten und ist bei weitem nicht so fehleranfällig.

Wenn du auch nur die Hälfte der Zeit, die du darin investieren wolltest, um deine CMD-Kenntnisse weiter auszubauen, stattdessen darin investierst, dir Powershell mal anzugucken, wirst du damit innerhalb kürzester Zeit deine CMD-Kenntnisse bei weitem übertroffen haben.
Haberl92
Haberl92 22.07.2021 um 22:34:42 Uhr
Goto Top
Ich habe es jetzt mit CMD perfekt umsetzen können.
Bin sehr begeistert.
Ich bin noch neu hier im Forum, aber ich bin positiv überrascht, wie schnell und freundlich einem hier geholfen wird.
Einfach Spitze!!

Für die Zukunft werde ich mal mehr mit Powershell probieren