Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Teil vom Dateinamen als Variable

Frage Entwicklung Batch & Shell

Mitglied: Bugger

Bugger (Level 1) - Jetzt verbinden

25.09.2013, aktualisiert 16:26 Uhr, 1699 Aufrufe, 10 Kommentare

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.
Mitglied: Endoro
25.09.2013 um 16:36 Uhr
Hi, ein Vorschlag:
01.
for /f "delims=" %%a in ('dir /b /a-d ^|grep -Eo "E[0-9][0-9]"') do ( 
02.
    echo %%a 
03.
)
grep for Windows
lg.
Bitte warten ..
Mitglied: Bugger
25.09.2013 um 17:27 Uhr
Danke, aber gibt es auch eine Möglichkeit ohne zusätzliche Software?
Bitte warten ..
Mitglied: Endoro
25.09.2013, aktualisiert um 19:09 Uhr
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:
01.
repl ".*(E\d\d).*" "$1"
lg.
Bitte warten ..
Mitglied: Bugger
25.09.2013, aktualisiert um 19:29 Uhr
Hmm, und eine Lösung die komplett auf zusätzliche scripte oder ähnliches verzichtet? Ich hatte sowas hier schon gesehen, allerdings wurde dort nie etwas aus der Mitte des Namens genommen. Etwas kurzes ohne Java. Sodass man auch noch durchblickt bei der Batch Datei.
Bitte warten ..
Mitglied: bastla
25.09.2013 um 19:55 Uhr
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):
01.
for /f "delims=" %%i in ('dir /b /a-d *E*.*') do ( 
02.
    for /f "delims=e" %%a in ("%%~ni") do ( 
03.
        set "Name=%%b" 
04.
        setlocal enabledelayedexpansion 
05.
        echo E!Name:~,2! 
06.
        endlocal 
07.
08.
)
Grüße
bastla
Bitte warten ..
Mitglied: Bugger
25.09.2013 um 20:23 Uhr
In der Art hatte ich mir das vorgestellt. Allerdings können auch noch andere E in dem Dateinamen vorkommen, daher kommt man mit *E* wohl nicht soweit.

Was mir jetzt erst einfällt was vll. helfen könnte, vor dem E stehen auch immer zwei Zahlen und ein S. Also S00E00 - in der Art.
Bitte warten ..
Mitglied: bastla
25.09.2013, aktualisiert um 20:37 Uhr
Hallo Bugger!
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
Bitte warten ..
Mitglied: Endoro
25.09.2013, aktualisiert um 22:15 Uhr
Hi, so was ist mir noch eingefallen:
01.
@echo off &setlocal 
02.
for /f "delims=" %%a in ('dir /b /a-d *e*^|findstr /i "E[0-2][0-9]"') do call:check "%%~na" 
03.
goto:eof 
04.
 
05.
:check 
06.
set "name=%~1" 
07.
:loop 
08.
set "name=%name:*e=%" 
09.
echo "%name%"|findstr /bi ".[0-2][0-9]" >nul|| goto:loop 
10.
set "name=e%name:~0,2%" 
11.
echo %name% 
12.
exit /b
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
Bitte warten ..
Mitglied: Biber
25.09.2013, aktualisiert um 22:08 Uhr
[bisschen OT] @ Endoro
Die Pattern für Findstr findstr /i "E[0-9][0-9]" liesse sich bei den gegebenen Anforderungen reduzieren auf findstr "E[0-2][0-9]"

Grüße
Biber
[/bisschen OT]
Bitte warten ..
Mitglied: Bugger
25.09.2013, aktualisiert um 22:26 Uhr
Also ich finde die Lösung sehr schön, sie funktioniert nämlich genauso wie ich mir das vorgestellt habe Vielen lieben Dank dafür!

Habe die Frage schon auf erledigt gesetzt aber meine andere Frage ist ja noch offen, auch wenn weniger wichtig.^^ Wäre aber interessant zu wissen, ob es denn einen Befehl gibt der das Fenster offen lässt bei Fehlern im Script?
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
In einer Batch-Datei einen variablen Teil eines Dateinamens auslesen
gelöst Frage von dh0815Batch & Shell5 Kommentare

Hallo Leute, das ist mein erster Post hier und ich möchte mich vorab schon dafür entschuldigen, wenn ich etwas ...

Batch & Shell
Teil eines Strings als Variable setzen
gelöst Frage von tHe-jAyBatch & Shell2 Kommentare

Hallo, für ein kleines Batch-Script benötige ich einen Servicenamen als Variable. Den Servicenamen frage ich über folgenden Befehl ab: ...

Batch & Shell
Teil eines Dateinnamen als Variable festlegen
gelöst Frage von trallerBatch & Shell3 Kommentare

In einem Ordner kommen folgende Dateinamen vor: wie kann ich mir den Teil "0101" als Variable in einem Script ...

Batch & Shell
Teile eines Dateinamens ändern mit Batch Datei
gelöst Frage von fffffuuuuuuuhhhhBatch & Shell4 Kommentare

Hallo, ich, stelle regelmäßig .mp3-Dateien her, die folgendermaßen von meinem Audioprogramm beschriftet wird: Interpret - Titel _xxxxxx000.mp3 die x stehen für eine ...

Neue Wissensbeiträge
Windows 10

Autsch: Microsoft bündelt Windows 10 mit unsicherer Passwort-Manager-App

Tipp von kgborn vor 15 StundenWindows 102 Kommentare

Unter Microsofts Windows 10 haben Endbenutzer keine Kontrolle mehr, was Microsoft an Apps auf dem Betriebssystem installiert (die Windows ...

Sicherheits-Tools

Achtung: Sicherheitslücke im FortiClient VPN-Client

Tipp von kgborn vor 17 StundenSicherheits-Tools

Ich weiß nicht, wie häufig die NextGeneration Endpoint Protection-Lösung von Fortinet in deutschen Unternehmen eingesetzt wird. An dieser Stelle ...

Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 1 TagInternet3 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 1 TagDSL, VDSL2 Kommentare

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Heiß diskutierte Inhalte
TK-Netze & Geräte
VPN-fähige IP-Telefone
Frage von the-buccaneerTK-Netze & Geräte16 Kommentare

Hi! Weiss noch jemand ein VPN-fähiges IP-Telefon mit dem man z.B. einen Heimarbeitsplatz gesichert anbinden könnte? Habe nur einen ...

Windows Server
GPO nur für bestimmte Computer
Frage von Leo-leWindows Server13 Kommentare

Hallo Forum, gern würde ich ein Robocopy script per Bat an eine GPO hängen. Wichtig wäre aber dort der ...

Windows Server
KMS Facts for Client configuration
Frage von winlinWindows Server13 Kommentare

Hey Leute, wir haben in unserem Netz nun einen neuen KMS Server. Haben Bestands-VMs die noch nicht aktiviert sind. ...

Windows Tools
Software-Tool zum Entfernen von bösartigem Windows
Frage von emeriksWindows Tools11 Kommentare

Hi, siehe Betreff hat das jemals irgendjemand schonmal sinnvoll eingesetzt? (MRT) E.