Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Dateinamen Umbenennen nach Ersetzten

Frage Entwicklung Batch & Shell

Mitglied: batchnewbie

batchnewbie (Level 1) - Jetzt verbinden

16.07.2014, aktualisiert 20:50 Uhr, 1068 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
gelöst Dateiname entsprechend einem um x-Ebenen übergeordeten Ordnernamen umbenennen (3)

Frage von Booster07 zum Thema Batch & Shell ...

Batch & Shell
Umbenennen entpackter Dateien nach Dateinamen der rar- zip-Datei

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

Windows Update
Abgelaufene und Ersetzte Updates - WSUS Intelligenz (6)

Frage von ofodag zum Thema Windows Update ...

Neue Wissensbeiträge
Humor (lol)

Wo ist der Fehler auf dem Bild?

(2)

Information von the-buccaneer zum Thema Humor (lol) ...

Windows Update

Offenbar erneutes MS-Update mit Fehlerschleife (2012 R2)

Information von VGem-e zum Thema Windows Update ...

Windows Installation

Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen

(14)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Heiß diskutierte Inhalte
Exchange Server
gelöst Proxy Server Settings Cloud + EWS (17)

Frage von SomebodyToLove zum Thema Exchange Server ...

Windows Server
PDF Editor für den Einsatz auf Terminal Servern (16)

Frage von kwame501 zum Thema Windows Server ...

Windows Installation
Unorthodoxer Weg, um an einen Offline-Installer für Adobe Flash zu kommen (14)

Tipp von beidermachtvongreyscull zum Thema Windows Installation ...

Virtualisierung
Unterschied zwischen VDI und Terminal Server Lösungen (13)

Frage von tukawi06 zum Thema Virtualisierung ...