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 Dateiname - bestimmtes Zeichen an unbestimmter Stelle suchen und ersetzen via Batch

Mitglied: jonny83

jonny83 (Level 1) - Jetzt verbinden

30.11.2009 um 09:23 Uhr, 20912 Aufrufe, 8 Kommentare

Dateinamen sollen nach einem Zeichen durchsucht werden und das dann durch ein bestimmtes ersetzt werden - Variabel sind jeweils die Stellen in dem Dateinamen.

Hallo,

auch nach längerem Suchen, hier im Forum und google, bekomme ich das nicht hin

Folgendes muss ich machen:

Derartige Dateien

ABC%20DEF%20GHIJKLMN%20.pdf
Das%20ist%20ein%20Test%20.txt
Gib%20mir%20bitte%20Leerstellen.doc

ändern in

ABC_DEF_GHIJKLMN_.pdf
Das_ist_ein_Test_.txt
Gib_mir_bitte_Leerstellen.doc

Die Dateinamen beinhalten also unterschiedlich viele Zeichen vor und nach %20

Was ich jetzt suche ist eine Batch die mir %20 in _ ändert.

Hier im Forum finde ich derartiges nur mit einer gleichen Anzahl von Zeichen vor und nach einer Variablen.

Der String ren *%20*.txt *_*.txt führt mich leider immer zu dem Ergebnis:

ABC%20DEF%20GHIJKLMN%20.pdf_.pdf
Das%20ist%20ein%20Test%20.txt_.txt
Gib%20mir%20bitte%20Leerstellen.doc_.doc

PS: Die Verwendung eines Tools ist ausgeschlossen - renameit oä. fällt somit leider weg. Es muss durch ein Skript gelöst werden.

Danke im Voraus für eure Hilfe!
Mitglied: Biber
30.11.2009 um 09:56 Uhr
Moin jonny83,

ich würde mich da nicht mit rumskripten aufhalten für so einen pilpul.
Fackel die Klamotte bei Bedarf mit einer Halbzeile vom CMD-Prompt ab.
01.
(= 9:52:20  D:\temp=) 
02.
>for %i in ("e:\schnipsel\*%20*.*") do @set "neu=%~nxi" & echo ren "%i" "!neu:%20=_!" 
03.
ren "e:\schnipsel\ABC%20DEF%20GHIJKLMN%20.pdf" "ABC_DEF_GHIJKLMN_.pdf" 
04.
ren "e:\schnipsel\Das%20ist%20ein%20Test%20.txt" "Das_ist_ein_Test_.txt" 
05.
ren "e:\schnipsel\Gib%20mir%20bitte%20Leerstellen.doc" "Gib_mir_bitte_Leerstellen.doc"
[ das ">" nicht mit eingeben; ist Teil meines Prompts]
[das "Echo ren" ist in beiden Schnipseln natürlich nur zum Testen... wenn tatsächlich umbenannt werden soll, das Wort "echo" weglassen]
Falls bei dir "Delayedexpansion" nicht standardmäßig gesetzt ist, kommen noch zwei Worte mehr dazu
01.
(= 9:52:21  D:\temp=) 
02.
>setlocal enableDelayedExpansion & for %i in ("e:\schnipsel\*%20*.*") do @set "neu=%~nxi" & echo ren "%i" "!neu:%20=_!" 
03.
ren "e:\schnipsel\ABC%20DEF%20GHIJKLMN%20.pdf" "ABC_DEF_GHIJKLMN_.pdf" 
04.
ren "e:\schnipsel\Das%20ist%20ein%20Test%20.txt" "Das_ist_ein_Test_.txt" 
05.
ren "e:\schnipsel\Gib%20mir%20bitte%20Leerstellen.doc" "Gib_mir_bitte_Leerstellen.doc"
... aber selbst dann geht es schneller, diese eine Zeile einzutippseln als zu überlegen, wie denn wohl der Batch hiess, unter dem diese Umbenamserei abgespeichert ist.

Grüße
Biber
Bitte warten ..
Mitglied: jonny83
30.11.2009 um 10:07 Uhr
Hallo Biber,

danke für die schnelle Antwort.

Zwei Dinge habe ich noch:

Es geht hier um den gesamten Inhalt eines Ordners c:\schnipsel\*.* <-- Egal was hier drin ist soll nach %20 durchsucht werden und bei "found" mit _ ersetzt werden.

Das zweite ist eine Frage:

kannst du mir nochmal das Skript erstellen (wie oben) mit der Voraussetzung das eben alle Dateien in dem Ordner bearbeitet werden?

.... danke!!!!
Bitte warten ..
Mitglied: jonny83
30.11.2009 um 10:33 Uhr
es geht hier auch darum meinen Benutzern ein Vorgehen zu beschreiben:

1. !Kopieren! Sie die betreffenden Dateien im Ordner C:\rename ab
2. Starten Sie das Programm "Start" "Programme" "Rename" Rename
3. Prüfen Sie ob die Dateien wie gewünscht umbenannt wurden

So - unter der Ink Rename muss klar meine Batch folgen
Bitte warten ..
Mitglied: paulepank
30.11.2009 um 12:04 Uhr
Hallo,

@Biber

setlocal enableDelayedExpansion
wirkt nur in einer Batch

in einem Einzeiler geht es dann so:
01.
cmd /v:on /c "for %i in ("e:\schnipsel\*%20*.*") do @set "neu=%~nxi" & echo ren "%i" "!neu:%20=_!""
@jonny83

was dir Biber geschrieben hat, erfüllt den Tatbestand des Durchsuchens nach %20.
Wenn du unbedingt für deine User eine Batch schreiben willst, dann tu Du es, indem du Bibers Einzeiler in eine Batch schreibst und die %-Zeichen verdoppelst.

cu paulepank
Bitte warten ..
Mitglied: jonny83
30.11.2009 um 13:44 Uhr
@Bider

vielen Dank für die Antwort - an der Stelle sei das nochmal gesagt!

@ paulepank

auch hier ein Danke für die Antwort - ich wollte ja nicht das Biber mir die Arbeit komplett abnimmt - nur wusste ich schon vorher das folgende Fragen auftauchen würde:

Folgendes habe ich in einer rename.cmd stehen:

C:\>setlocal enableDelayedExpansion & for %i in ("c:\rename\*%20*.*") do @set "n
eu=%~nxi" & ren "%i" "!neu:%20=_!"

Folgende Ausgabe erhalte ich:

Dateiname existiert bereits, oder die Datei
konnte nicht gefunden werden.
Dateiname existiert bereits, oder die Datei
konnte nicht gefunden werden.
Dateiname existiert bereits, oder die Datei
konnte nicht gefunden werden.
Dateiname existiert bereits, oder die Datei
konnte nicht gefunden werden.
Dateiname existiert bereits, oder die Datei
konnte nicht gefunden werden.
Dateiname existiert bereits, oder die Datei
konnte nicht gefunden werden.
Dateiname existiert bereits, oder die Datei
konnte nicht gefunden werden.
Dateiname existiert bereits, oder die Datei
konnte nicht gefunden werden.
Dateiname existiert bereits, oder die Datei
konnte nicht gefunden werden.


tut mir leid - aber ich finde den Fehler nicht ....
Bitte warten ..
Mitglied: paulepank
30.11.2009 um 14:14 Uhr
Hallo,

wenn z.B. im Ordner "rename" eine Datei A%20B.pdf und ein Datei A_B.pdf enthalten ist, kommt beim Umbenennen diese Fehlerauschrift.
Du mußt also diesen Umstand entsprechend beachten.

cu paulepank
Bitte warten ..
Mitglied: Biber
30.11.2009 um 14:34 Uhr
Moin jonny83,

sorry, war anderweitig beschäftigt.

Wenn es denn nun in Gates Namen eine Batchdatei sein muss, dann anbei dafür eine (mögliche) Syntax unter der Auflage:
Versuch bitte nicht, die Logik der einfachen und doppelten Prozentzeichen irgendwem abends beim Darts in der Kneipe zu vermitteln.
01.
::--- Renamer.cmd 
02.
@echo off & setlocal enableDelayedExpansion  
03.
for %%i in ("c:\rename\*%%20*.*") do ( 
04.
     set "neu=%%~nxi"  
05.
     Echo ren "%%i" "!neu:%%20=_!" 
06.
) 
Die Batch sieht - in diesem exotischen Fall - nicht unbedingt leserlicher aus als der CMD-Oneliner, weil...
  • zwar die eine (logische) Befehlszeile auf 4 optische Zeilen verteilt werden kann
  • und ich auch noch in einfachen Worten plausibel rüberbringen kann, dass im Batch aus %i ein %%i, aus %j ein %%j wird etc.
  • aber damit der Suchstring "%20" nicht mit einem möglichen Parameter %2 verwechselt werden kann, dazu sind nochmals in vollkommen abstrusen Stellen %-Zeichen einzustreuen.
---> nimm die Syntax einfach so hin.

Grüße
Biber

P.S. @paulepank
Yep, der Hinweis auf "Cmd /v:on" ist berechtigt.
Und eigentlich funktioniert (oder funktioniert geplanterweise) SetLocal EnableDelayedExpansion auch nur im Batch.
Bitte warten ..
Mitglied: jonny83
30.11.2009 um 14:48 Uhr
Hallo Biber,

hey - ich danke dir 1000fach!
Super klasse - so funktioniert es jetzt prima!

Vielen vielen Dank!!!!

Gruß
jonny83
Bitte warten ..
Ähnliche Inhalte
Microsoft

Suche und Ersetzen im Dateinamen mit Wildcard?

gelöst Frage von GottfriedKernMicrosoft5 Kommentare

Ich suche ein Programm, dass Dateinamen durchsucht und mittels Platzhalter ersetzen kann. Beispiel: toller - sound (2002).mp3 soll in ...

Batch & Shell

Bestimmte Zeichen per Batch aus Dateinamen entfernen

gelöst Frage von wollebeeBatch & Shell6 Kommentare

Ich bekomme Dateien, bei denen ich automatisch per Batch den Dateinamen ändern möchte. Nun besteht der erste Teil des ...

Batch & Shell

BATCH Dateinamen auslesen und an variabler Stelle x Zeichen auschneiden und am Ende wieder einfügen

gelöst Frage von Marco78Batch & Shell6 Kommentare

Ich habe folgendes Problem. Ich möchte Dateinamen um einen bestimmten Teil ändern damit ich diese sortieren kann. Ist Zustand ...

Batch & Shell

Tilde Zeichen per Batch ersetzen

gelöst Frage von Blackhawk386Batch & Shell6 Kommentare

Hi! Ich habe eine Datei in Textform, in der Umlaute per Batch umgewandelt werden müssen. Dazu habe ich hier ...

Neue Wissensbeiträge
Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 15 StundenHumor (lol)3 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 1 TagGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 1 TagSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Microsoft
ARD-Doku - Das Microsoft Dilemma
Tipp von Knorkator vor 1 TagMicrosoft3 Kommentare

Hallo zusammen, vor einigen Tagen lief in der ARD u.a. Reportage. Das Youtube Video dazu dürfte länger verfügbar sein. ...

Heiß diskutierte Inhalte
Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...

Windows Netzwerk
Backup über WAN
Frage von petereWindows Netzwerk11 Kommentare

Hallo, ich muss aus einem entfernten WAN (synchrone 1Gbit) Daten sichern. Dabei handelt es sich sowohl um wenige große ...