batchnewbie
Goto Top

Per Findstr, Suchen nach dies bzw. jenes, sonst sonstiges

Hallo,
ich stehe irgendwie auf dem Schlauch und benötige eure Hilfe.

Ich habe drei unterschiedliche Dateiname-Muster einmal welche mit foo, dann bar und blabla
Die Dateien mit foo und bar sollen nach dem gleichen Prinzip verarbeitet werden (umbenannt).
Die Dateien mit blabla sollen extra verarbeitet werden, die Vorlage ist anders...

Ich dachte ich lese die Dateinamen ein und dann per FindStr suche ich nach foo bzw. bar und alles was übrig bleibt (blabla ) wird dann zum Schluss verarbeitet.

Mein Endwurf sieht so aus, leider funktioniert es irgendwie nicht so richtig:
@echo off & setlocal enabledelayedexpansion & title %~n0
cls

set "Verzeichnis=%~dp0"  
set "Typ=txt"  

pushd %Verzeichnis% || goto :eof

echo>File-29032015-Name01-fooblub.%Typ%
echo>File-28032015-Name01barblub.%Typ%
echo>File-25032015-Name01_blablablub.%Typ%
echo>File-08112014-Name01_blablablub.%Typ%

for /f "delims=" %%i in ('dir /b /a-d "*2015*.%Typ%"') do (  
    set DateiName=%%~ni
    
    echo findstr /L/C:"foo bar" !DateiName!>nul && (  
    echo hier soll "foo" und "bar" verarbeiten werden !DateiName!  
    echo ren %%i !NeueDateiName!
    echo....)
    
    echo hier kein foobar verarbeiten !DateiName!
    echo ren %%i blabla.%typ%
)    
pause
Hoffe auf eure Hilfe face-smile

Content-ID: 267800

Url: https://administrator.de/forum/per-findstr-suchen-nach-dies-bzw-jenes-sonst-sonstiges-267800.html

Ausgedruckt am: 20.12.2024 um 17:12 Uhr

rubberman
Lösung rubberman 29.03.2015 aktualisiert um 17:24:52 Uhr
Goto Top
Hallo batchnewbie.

und alles was übrig bleibt ( blabla ) wird dann zum Schluss verarbeitet.

findstr ... >nul && (
  REM hier soll "foo" und "bar" verarbeiten werden  
) || (
  REM hier kein foobar verarbeiten
)
oder das IF ERRORLEVEL Statement
findstr ... >nul
if errorlevel 1 (
  REM hier kein foobar verarbeiten
) else (
  REM hier soll "foo" und "bar" verarbeiten werden  
)
Grüße
rubberman
batchnewbie
batchnewbie 29.03.2015 um 17:25:26 Uhr
Goto Top
Danke hat mir sehr geholfen face-smile
batchnewbie
batchnewbie 29.03.2015 um 22:02:39 Uhr
Goto Top
Hallo,
ich hab jetzt doch noch ein kleines Problemchen und zwar habe ich das per doppelt Find /i gemacht, das ganze sieht so aus:
@echo off & setlocal enabledelayedexpansion & title %~n0
cls

set "Typ=txt"  

for /f "delims=" %%i in ('dir /b /a-d "*2015*.%Typ%"') do (  
    set DateiName=%%~ni

    echo !Dateiname!|find /i "foo">nul && (  
        echo hier foo * !DateiName!
        ) || (
              echo !Dateiname!|find /i "bar">nul && (  
              echo hier bar ** !DateiName!
              ) || (
          echo hier rest *** !DateiName!
          echo....
        )
    )
)
Funktioniert wie es soll nur, dass ich jetzt den Code für foo und bar extra doppelt gemoppelt hab.
Kann das bitte jemand für mich als einfaches FindStr umbauen face-smile

Danke
rubberman
Lösung rubberman 29.03.2015 aktualisiert um 23:15:52 Uhr
Goto Top
Wie das mit FINDSTR funktioniert, hattest du oben schon fast 1:1 stehen.
echo !Dateiname!|findstr /i "foo bar">nul &&(
Falls dein foo und bar in der Realität Leerzeichen enthalten sollten, dann etwas anders:
echo !Dateiname!|findstr /ic:"foo" /ic:"bar">nul &&(

Grüße
rubberman
batchnewbie
batchnewbie 29.03.2015 um 23:21:03 Uhr
Goto Top
Danke, so ist es viel einfacher face-smile