Teil vom Dateinamen als Variable
Hallo,
ich möchte aus einem Dateinamen 3 Zeichen auslesen und als Variable nutzen können. Die 2 der 3 Zeichen unterscheiden sich aber immer. Fängt immer mit E an gefolgt von zwei Zahlen zwischen 01 bis 25. Die Anzahl an Zeichen vor und nach diesen dreien unterscheiden sich ebenfalls. Also müsste irgendwie im Dateinamen gesucht werden. Falls es relevant ist, vor und nach diesem Codeblock liegen weitere Befehle. Daher muss es auch ein Batch Lösung sein.
Geht das irgendwie? Danke im Voraus
Und noch eine Frage nebenbei, gibt es einen Befehl, der das cmd Fenster vom schließen abhält wenn eine Formel einen Fehler hat? Pause funktioniert nicht.
ich möchte aus einem Dateinamen 3 Zeichen auslesen und als Variable nutzen können. Die 2 der 3 Zeichen unterscheiden sich aber immer. Fängt immer mit E an gefolgt von zwei Zahlen zwischen 01 bis 25. Die Anzahl an Zeichen vor und nach diesen dreien unterscheiden sich ebenfalls. Also müsste irgendwie im Dateinamen gesucht werden. Falls es relevant ist, vor und nach diesem Codeblock liegen weitere Befehle. Daher muss es auch ein Batch Lösung sein.
Geht das irgendwie? Danke im Voraus
Und noch eine Frage nebenbei, gibt es einen Befehl, der das cmd Fenster vom schließen abhält wenn eine Formel einen Fehler hat? Pause funktioniert nicht.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 217848
Url: https://administrator.de/contentid/217848
Ausgedruckt am: 04.12.2024 um 08:12 Uhr
10 Kommentare
Neuester Kommentar
Hi, ein Vorschlag:
grep for Windows
lg.
for /f "delims=" %%a in ('dir /b /a-d ^|grep -Eo "E[0-9][0-9]"') do (
echo %%a
)
lg.
Ja, du könntest ein "Hybridscript" (JScript/Batch) nehmen, da muss nichts installiert werden weil es vom WSH direkt unterstützt wird. Es gibt einige im Netz, zB dieses. Du ersetzt den 'grep'-Aufruf einfach damit:
lg.
repl ".*(E\d\d).*" "$1"
Hallo Bugger!
Kann vor dem gesuchten Namensbestandteil ein weiteres "E" (oder "e") enthalten sein? Können die 3 Zeichen auch am Beginn des Dateinamens stehen?
Bei zweimal "nein" könntest Du die Zerlegung so versuchen (ungetestet):
Grüße
bastla
Kann vor dem gesuchten Namensbestandteil ein weiteres "E" (oder "e") enthalten sein? Können die 3 Zeichen auch am Beginn des Dateinamens stehen?
Bei zweimal "nein" könntest Du die Zerlegung so versuchen (ungetestet):
for /f "delims=" %%i in ('dir /b /a-d *E*.*') do (
for /f "delims=e" %%a in ("%%~ni") do (
set "Name=%%b"
setlocal enabledelayedexpansion
echo E!Name:~,2!
endlocal
)
)
bastla
Hallo Bugger!
Grüße
bastla
Allerdings können auch noch andere E in dem Dateinamen vorkommen
Magst Du auch verraten, an welchen Positionen? Meine Prämissen findest Du ja oben ...was vll. helfen könnte, vor dem E stehen auch immer zwei Zahlen und ein S. Also S00E00 - in der Art.
Hilft hinsichlich der Zerlegung nix, da alles vor dem ersten "E" (wenn nicht das "E" am Anfang des Dateinamens steht) in "%%a" landet und schlicht ignoriert wird ...daher kommt man mit *E* wohl nicht soweit.
Ist das das Ergebnis Deines Tests?Grüße
bastla
Hi, so was ist mir noch eingefallen:
Schön ist das aber nicht. Ich würde lieber ein bewährtes Unix-Tool oder meinetwegen JScript nehmen
lg.
PS: Dank an @Biber, ist verbessert
@echo off &setlocal
for /f "delims=" %%a in ('dir /b /a-d *e*^|findstr /i "E[0-2][0-9]"') do call:check "%%~na"
goto:eof
:check
set "name=%~1"
:loop
set "name=%name:*e=%"
echo "%name%"|findstr /bi ".[0-2][0-9]" >nul|| goto:loop
set "name=e%name:~0,2%"
echo %name%
exit /b
lg.
PS: Dank an @Biber, ist verbessert