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, 1045 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 ..
Ähnliche Inhalte
Batch & Shell
Umbenennen entpackter Dateien nach Dateinamen der rar- zip-Datei

Frage von windows-nutzer zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateien (PDF) umbenennen via batch, teilw. Dateinamen übernehmen, neues Präfix (6)

Frage von brause1701 zum Thema Batch & Shell ...

Batch & Shell
gelöst Verzeichniss überwachen Datei kopieren und umbenennen (6)

Frage von fischle63 zum Thema Batch & Shell ...

Batch & Shell
gelöst Erstelldatum vieler Dateien ändern (aus Dateinamen abgeleitet) (11)

Frage von X-Spezi zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Batch & Shell
gelöst ZIP-Archive nach Dateien durchsuchen und Pfade ausgeben (33)

Frage von evinben zum Thema Batch & Shell ...

Router & Routing
Routingproblem in Homerouter-Kaskade mit Raspi (20)

Frage von Oldschool zum Thema Router & Routing ...

Server
Freenas schlechte Schreib Performance bei NFS (16)

Frage von janosch12 zum Thema Server ...

C und C++
Methode multiple return values (8)

Frage von mayho33 zum Thema C und C ...