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

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

Printed on: April 19, 2024 at 20:04 o'clock

Member: rubberman
Solution rubberman Mar 29, 2015 updated at 15:24:52 (UTC)
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
Member: batchnewbie
batchnewbie Mar 29, 2015 at 15:25:26 (UTC)
Goto Top
Danke hat mir sehr geholfen face-smile
Member: batchnewbie
batchnewbie Mar 29, 2015 at 20:02:39 (UTC)
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
Member: rubberman
Solution rubberman Mar 29, 2015 updated at 21:15:52 (UTC)
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
Member: batchnewbie
batchnewbie Mar 29, 2015 at 21:21:03 (UTC)
Goto Top
Danke, so ist es viel einfacher face-smile