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-Key: 1062978741

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

Printed on: April 16, 2024 at 05:04 o'clock

Member: PeterPanter
PeterPanter Jul 21, 2021 at 06:00:36 (UTC)
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
Member: Haberl92
Haberl92 Jul 21, 2021 at 10:22:35 (UTC)
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.
Mitglied: 149062
Solution 149062 Jul 21, 2021 updated at 10:37:28 (UTC)
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.
Member: TK1987
TK1987 Jul 21, 2021 at 10:45:50 (UTC)
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
Member: PeterPanter
PeterPanter Jul 21, 2021 at 11:33:04 (UTC)
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
Member: Haberl92
Haberl92 Jul 21, 2021 at 20:47:52 (UTC)
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)
Member: TK1987
TK1987 Jul 21, 2021 at 23:43:05 (UTC)
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.
Member: Haberl92
Haberl92 Jul 22, 2021 at 20:34:42 (UTC)
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