Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Dateinamen Umbenennen nach Ersetzten

Frage Entwicklung Batch & Shell

Mitglied: batchnewbie

batchnewbie (Level 1) - Jetzt verbinden

16.07.2014, aktualisiert 20:50 Uhr, 1022 Aufrufe, 9 Kommentare, 2 Danke

Hallo,
ich experimentiere ein wenig und bin ein einem Punkt, wo ich nicht weiter weiß.

Ich lese ein Dateinamen (DateiName) ein, aus der Mitte der Dateinamen entnehme ich nur die Buchstaben (AZ) , diese forme ich um (AZ5) und möchte die Ausgang Buchstaben (AZ) mit den modifizierten Buchstaben (AZ5) ersetzten. Danach möchte ich Org. Dateinamen mit den Neudateinamen umbenennen.

Zeile 37 macht mir Probleme, bekomme es einfach nicht gebacken wie AZ mit AZ5 ersetzt werden kann.
Egal wie ich es anstelle ob mit %AZ%=%AZ5% oder irgendwie anders, es funktioniert nicht.
Nehme ich die "Nacken" Buchstaben funktioniert es nicht.

Hoffe man kann mir bei dem "kleinen" Problem weiter Helfen.

Mein Code
01.
@echo off & setlocal enabledelayedexpansion & title %~n0 
02.
cls 
03.
 
04.
echo.>1234ABCD5678.log 
05.
echo.>00Blub00.log 
06.
 
07.
for /f "delims=" %%a in ('dir /b /a-d "*.log"') do ( 
08.
   set DateiName=%%a 
09.
   echo DateiName: !DateiName! 
10.
    
11.
     :: Zahlen filtern 
12.
     for /f "delims=1234567890 tokens=1,2" %%i in ("%%a") do ( 
13.
     :: Nur Buchstaben 
14.
     set AZ=%%i 
15.
     echo Buchstaben: !AZ! 
16.
     echo. 
17.
18.
 
19.
   :: Extrahieren    
20.
   set AZ1=!AZ:~0,1! 
21.
   set AZ2=!AZ:~1,1! 
22.
   set AZ3=!AZ:~2,1! 
23.
   set AZ4=!AZ:~3,1! 
24.
   echo AZ1: !AZ1! 
25.
   echo AZ2: !AZ2! 
26.
   echo AZ3: !AZ3! 
27.
   echo AZ4: !AZ4! 
28.
   echo. 
29.
    
30.
   :: Zusammensetzen 
31.
   set AZ5=!AZ1!-!AZ2!-!AZ3!-!AZ4! 
32.
   echo AZ5: !AZ5! 
33.
   echo. 
34.
    
35.
   :: Ersetzten  
36.
   REM set NeueDateiname:!DateiName:ABCD=-A-B-C-D-! 
37.
   set NeueDateiName:!DateiName:!AZ!=!AZ5!! 
38.
   echo NeueDateiname: !NeueDateiname! 
39.
    
40.
   :: Umbenennen 
41.
   echo ren %DateiName% %NeueDateiName% 
42.
43.
pause
Mitglied: Gersen
16.07.2014 um 13:51 Uhr
Hallo,

01.
SET NeueDateiName=!DateiName:%AZ%=%AZ5%!
vielleicht?

Gruß,
Gersen
Bitte warten ..
Mitglied: batchnewbie
16.07.2014 um 14:04 Uhr
leider nicht, als Ausgabe kommt:

NeueDateiName: DateiName:=
Bitte warten ..
Mitglied: Gersen
16.07.2014 um 14:22 Uhr
Neues Spiel, neues Glück...

Folgendes hat eben geklappt:

01.
call set NeueDateiName=%%DateiName:%AZ%=%AZ5%%%
Bitte warten ..
Mitglied: batchnewbie
16.07.2014 um 14:39 Uhr
Bei mir funktioniert das nicht
Bitte warten ..
Mitglied: Gersen
16.07.2014, aktualisiert um 15:22 Uhr
Falscher Post, sorry!
Bitte warten ..
Mitglied: rubberman
LÖSUNG 16.07.2014, aktualisiert um 20:50 Uhr
Hallo batchnewbie,
Was glaubst du wie die cmd mit den ganzen Ausrufezeichen umgeht?
set NeueDateiName:!DateiName:!AZ!=!AZ5!!
Bedenke dass Ausrufezeichen paarweise behandelt werden. Also !DateiName:! als Variable, !=! als Variable und !! als ... ähm ... nix. Und was soll der Doppelpunkt hinter NeueDateiName? (=?)
ungetestet:
for /f "delims=" %%i in ("!AZ!") do for /f "delims=" %%j in ("!AZ5!") do set "NeueDateiName=!DateiName:%%i=%%j!"
Dass Prozentzeichenexpansion in Zeile 41 auch nicht funktionieren kann, sollte einleuchten.

Grüße
rubberman
Bitte warten ..
Mitglied: batchnewbie
16.07.2014 um 20:49 Uhr
Danke ja das rennt so, aber wieso muss das per doppelte Schleife durchlaufen?
Wieso kann man das nicht so wie hier: Replace - Replace a substring using string substitution machen?
Mit einfachen set NeueDateiname=!DateiName:ABCD=A-B-C-D! funktioniert es ja, werden die beiden Variablen (AZ & AZ5) nicht gelesen?

Übrigens kA wie der Doppelpunkt da hingekommen ist (wohl bei editieren passiert ), es muss selbstverständlich Gleichzeichen rein (Zeile 36 & 37 hinter NeueDateiname). So habe ich es auch hier getestet...


Em ja, die Zeile 41 muss natürlich mit Anführungszeichen laufen...und nicht per Prozentzeichen 0
Bitte warten ..
Mitglied: rubberman
16.07.2014 um 21:13 Uhr
Mit einfachen set NeueDateiname=!DateiName:ABCD=A-B-C-D! funktioniert es ja, werden die beiden Variablen (AZ & AZ5) nicht gelesen?
Nein, sie werden nicht gelesen. Wie die Zeile interpretiert wird, habe ich dir oben gezeigt. Jeweils der Ausdruck zwischen zwei aufeinanderfolgenden Ausrufezeichen wird versucht als Variable zu expandieren. Nochmal in Farbe zum besseren Verständnis:
!DateiName:!AZ!=!AZ5!!
Jetzt klar geworden?

Grüße
rubberman
Bitte warten ..
Mitglied: batchnewbie
16.07.2014 um 21:49 Uhr
Jop, jetzt habe ich es verstanden was so paar Farben bewirken können
Jetzt verstehe ich auch die zwei Schleifen..., anders bekommen man die Variablen ja nicht gelesen!!

Danke
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateiname entsprechend einem um x-Ebenen übergeordeten Ordnernamen umbenennen (3)

Frage von Booster07 zum Thema Batch & Shell ...

C und C++
Dateien in Ordner kopieren anhand vom Teil eines Dateinamen (22)

Frage von onlyforu8373 zum Thema C und C ...

Batch & Shell
gelöst PS-Skript anhand Dateinamen und zusätzlich Dateityp (Mapping) verschieben (2)

Frage von cleverm zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...