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
Kommentar vom Moderator Biber am 02.02.2010 um 19:34:16 Uhr
Challenge mit einem Batch beim Umbennen...
#rgc = 643
ich habe eine Challenge mit dem Umbennen von Dateien mit einem Batch File
#rgc = 644
Ich würde gerne alle '.' im File Namen (Z.B. eins.zwei.drei.txt) in '-' (eins-zwei-drei.txt) umbennen.
#rgc =645
Ein "Umbennen" hatten wir schon oft, aber noch nie so viele im Zusammenhang mit der Challenger...
Muss ein Mehr-Sitzer sein...

gelöst Challenge mit einem Batch beim Umbennen von Files mit einem Punkt im Namen gesucht

Mitglied: thomas2010

thomas2010 (Level 1) - Jetzt verbinden

02.02.2010, aktualisiert 19:36 Uhr, 3659 Aufrufe, 12 Kommentare

Hallo Alle,

ich habe eine Challenge mit dem Umbennen von Dateien mit einem Batch File
(Es sind sehr viele Files und deswegen will ich das automatisieren).

Ich würde gerne alle '.' im File Namen (Z.B. eins.zwei.drei.txt)
in '-' (eins-zwei-drei.txt) umbennen.

Ich habe mir die Beispiele von den anderen Umbenennen Fragen angesehen aber ich
bekomms leider nur hin das alle und damit leider auch
das letzte '.' im Beispiel '.txt' (File Endung) umbenannt werden.

Kann mir irgend jemand Bitte helfen oder einen Tipp geben wie man das richtig mit
einem Batch macht und das letzte '.' im File Namen beim umbenennen bestehen bleibt?

Grüße
Thomas
Mitglied: dog
02.02.2010 um 19:09 Uhr
Ungetestet mit VBS etwa so:
01.
Dim file, name,first, newName
02.

03.
Set filesys = CreateObject("Scripting.FileSystemObject")
04.
Set folder  = filesys.GetFolder("C:\Ordner")
05.
Set files   = folder.Files
06.

07.
For Each file in files
08.
	name = StrReverse(file.Name)
09.
	first = InStr(name,".")
10.
	newName = Replace(name,"-",".",(first+1))
11.
	file.Name = StrReverse(newName)
12.
Next
Bitte warten ..
Mitglied: miniversum
02.02.2010 um 19:15 Uhr
Ungstestete version:
01.
@echo off
02.
FOR /F "delims=" %%i in ('dir /b "C.\dateien\*.*"') do call:umbenennen "%~ni" "%~xi"
03.
goto:eof
04.

05.
:umbenennen
06.
set "name=%~1"
07.
ren "C.\dateien\%~1%~2" "%name:.=-%%~2"
Bitte warten ..
Mitglied: 76109
02.02.2010 um 22:20 Uhr
Hallo Dog!

Dein Skript wird nicht funktionieren. Die Dateierweiterung geht verloren und bei Replace ist die Reihenfolge vertauscht ("-", "." anstatt ".", "-")

Alternativ sollte das gehen (*.vbs):
01.
Const Path = "C:\Ordner"
02.

03.
Dim Folder, File, oldName, newName
04.

05.
Set Folder = CreateObject("Scripting.FileSystemObject").GetFolder(Path)
06.

07.
For Each File In Folder.Files
08.
    oldName = Split(StrReverse(File.Name), ".", 2)
09.
    newName = Replace(StrReverse(oldName(1)), ".", "-") & "." & StrReverse(oldName(0))
10.
    If File.Name <> newName Then File.Name = newName
11.
Next
Gruß Dieter
Bitte warten ..
Mitglied: dog
02.02.2010 um 22:29 Uhr
Ja, ich habe beim Beitrag nicht richtig aufgepasst
Bitte warten ..
Mitglied: 76109
02.02.2010 um 22:33 Uhr
Hallo Dog!

Das passiert mir ab und zu auch

Gruß Dieter
Bitte warten ..
Mitglied: edepfau
03.02.2010 um 09:43 Uhr
getestete Version:
01.
cd /d "C:\Ordner"
02.
FOR /R %%i in ("*.*") do call :umbenennen "%%~pi" "%%~ni" "%%~xi"
03.
goto :EOF
04.

05.
:umbenennen 
06.
REM path name_only ext
07.
set "name=%~2" 
08.
ren "%~1%~2%~3" "%~1%name:.=-%%~3"
Unterschied: der voll Pfad wird mitgenommen, die Verzeichnisse werden rekursiv durchlaufen.

Gruss,
Ede
Bitte warten ..
Mitglied: Biber
03.02.2010 um 11:01 Uhr
Moin edepfau,


Zitat von edepfau:
getestete Version:
Mag sein... aber wenn das Ergebnis des Test doch so war wie es aufgrund des Codes sein muss...
Dann solltest du besser ein paar Smilies dahintersetzen.... sonst benutzt noch irgendjemand den Schnipsel.

Andererseits...
.. es gab auch mal eine Zahnpasta, die sich verkauft hat wie blöd... auch nur wegen des Slogans "Klinisch getestet".
Und die hatten auch nie das Ergebnis des Tests mit angegeben.

01.
> cd /d "C:\Ordner"
02.
> FOR /R %%i in ("*.*") do call :umbenennen "%%~pi" "%%~ni" "%%~xi"
03.
> goto :EOF
04.
> 
05.
> :umbenennen 
06.
> REM path name_only ext
07.
> set "name=%~2" 
08.
> ren "%~1%~2%~3" "%~1%name:.=-%%~3"
09.
> 
Unterschied: der voll Pfad wird mitgenommen, die Verzeichnisse werden rekursiv durchlaufen.

Gruss,
Ede

Kann aus zwei Gründen zwar keinen Schaden anrichten, aber auch nie funktionieren

  • Wenn beim Umbenennen "alterName"=="neuerName" ist, dann geht natürlich ein "REN alterName neuerName" in die Grütze.

  • selbst wenn Dateien gefunden worden wären mit "neuerName ist anders als alterName", also mit zu ersetzendem Punkt im Dateinamen, dann wäre der REN-Befehl daran gescheitert, dass bei Alt- UND bei Neu-Datei jeweils der Pfad mit angegeben ist. Das darf nicht.

Neuer Versuch (Prädikat "getestet und für ausbaufähig befunden")
01.
@echo off & setlocal
02.
FOR /R "D:\Biber" %%i in ("*.*") do call :umbenennen "%%~fi"
03.
goto :EOF
04.

05.
:umbenennen 
06.
:: den Namen (ohne Ext) in eine Variable speichern zum Suchen/ersetzen
07.
Set "name=%~n1" 
08.
:: Punkt durch Minus ersetzen
09.
Set "Name=%name:.=-%"
10.
:: Wenn kein Punkt im Namen war bzw. NameVorher gleich NameNachher.ZURÜCK
11.
If "%name%"=="%~n1" goto :eof
12.
:: sonst : Umbenamsen HIER NUR ANGEDEUTET mit ECHO
13.
Echo ren "%~1" "%name%%~x1"
Ergebnis/Ausgabe eines Aufrufs der Batchdatei "edeV.cmd"
>z:\austausch\edev.cmd
ren "D:\Biber\downloads\KDiff3Setup_0.9.95.exe" "KDiff3Setup_0-9-95.exe"
ren "D:\Biber\downloads\seamonkey-1.1.16.de-AT.win32.zip" "seamonkey-1-1-16-de-AT-win32.zip"
Von allen Dateien in der Teilstruktur "D.\Biber" haben einzig die beiden angezeigten Dateien einen/mehrere Punkte im Namen.
Und für die wird angezeigte REN-Anweisung generiert

Grüße
Biber
Bitte warten ..
Mitglied: edepfau
03.02.2010 um 13:17 Uhr
Sehr guter Hinweis auf die Syntax von ren. Der Pfad darf beim Ersatznamen nicht angegeben werden.
Auch die Aufnahme des Anfangspfads in die "for"-Schleife ist gut, sehr kompakt. Kannte ich nicht.

Der andere Einwand, dass ren "abc" "abc" zu einem Fehler führt, stimmt zumindest bei mir nicht (W2K, cmd-Fenster). Vielleicht aber unter DOS.
Ohne IF-Abfrage und doppelte Ersetzungen spart man eine Menge Zeit, wenn es um Tausende von Ordnern geht.

01.
@echo off & setlocal enableextensions                
02.
FOR /R "C:\Ordner" %%i in ("*.*") do call :umbenennen "%%~pi" "%%~ni" "%%~xi"
03.
goto :EOF
04.

05.
:umbenennen 
06.
REM path name_only ext
07.
set "name=%~2" 
08.
ren "%~1%~2%~3" "%name:.=-%%~3" || echo FEHLER bei "%~1%~2%~3"
09.
Gruss,

Ede
Bitte warten ..
Mitglied: Biber
03.02.2010 um 14:17 Uhr
Moin edepfau,

Hier hast du recht...
Der andere Einwand, dass ren "abc" "abc" zu einem Fehler führt, stimmt zumindest bei mir nicht (W2K, cmd-Fenster). Vielleicht aber unter DOS.

Das habe ich nicht überprüft (sondern nur den oft gelesenen Fehlertext "Datei nicht gefunden oder doppelter Dateiname" im Hinterkopf bzw. unterstellt).

In der Tat ist es aber so, dass der Versuch einer Datei-Umbenamsung auf den bereits vorhanden Namen nicht als "Fehler" gewertet wird
Beispiel:
01.
>echo xx>test23.txt
02.
>ren test23.txt test23.txt ||echo fehler
03.
{... echoes nothing..}
Und noch redmondiger - nicht nur, dass kein Fehler gemeldet wird... er macht es auch tatsächlich..
Eine Variation
ren test23.txt Test23.txt
.... hinterlässt wirklich eine "Test23.txt"-Datei mit einem gross geschriebenen "T" ...

So wie die Mädels möchte ich auch programmieren können...

Grüße
Biber
Bitte warten ..
Mitglied: thomas2010
04.02.2010 um 18:11 Uhr
Hallo Biber,

erstmal Danke für die gute wirklich interessante Lösung.
Auch Danke an die anderen der Diskussion.
Wieder einiges dazu gelernt!

Eine kleine Sache ist mir aber noch nicht ganz klar.

:: Punkt durch Underline ersetzen
set "name=%name:.=_%"
xxxx

Das ':' steht für ersetzen?
Wo sind solche Sachen eigenlich dokumentiert?
Ich habe im Netz mal gesucht habe aber zu dem speziellen set nichts gefunden.

Gruß
Thomas
Bitte warten ..
Mitglied: miniversum
04.02.2010 um 18:33 Uhr
starte die cmd und gib dort
set /?
ein. Da steht das.
Funktioniert auch bei anderen Befehlen ;)
Bitte warten ..
Mitglied: Biber
04.02.2010 um 18:37 Uhr
Moin thomas2010,

zu deinen Rest/Folgefragen
Das ':' steht für ersetzen?
Jein.... siehe unten.

Wo sind solche Sachen eigenlich dokumentiert?

Das wirst du jetzt gar nicht glauben, ist aber ernst gemeint:
Am heimischen Rechner in einem geöffneten CMD-Fenster.
Da gibt es zu jedem internen/externen mitgelieferten Kommandozeilen-Befehl eine Hilfe durch einfachen Aufruf von "DerBefehl /?"

Und die ist eigentlich gar nicht schlecht und verglichen mit dem Internet regelrecht werbefrei.
Beispiel am CMD-Prompt wäre die Hilfe zum Befehl SET, wo ja vielleicht nicht nur etwas zum SETzen von Variablen steht, sondern auch etwas zur UmSETzung..

> SET /?
.....
....
Das Ersetzen von Umgebungsvariablen wurde folgendermaßen erweitert:

    %PATH:str1=str2%

Dies erweitert die PATH-Umgebungsvariable, wobei jede Instanz von "str1" im
erweiterten Ergebnis mit "str2" ersetzt wird. "str2" kann die leere
Zeichenfolge sein, um alle Instanzen von "str1" aus der erweiterten Ausgabe zu
löschen. Wenn "str1" mit einem Sternchen beginnt, steht "str1" für alles
zwischen dem Anfang der erweiterten Ausgabe bis zum ersten Auftreten des
übrigen Abschnitts von "str1".
.....
....
Ich habe im Netz mal gesucht habe aber zu dem speziellen set nichts gefunden.
Irgendwo zwischen den Extremen "ganz triste Hilfe zu CMD-Befehlen auf einem bernsteinfarbenen 25x80 Monitor" und "quietschbunte Kiddiesprechblasen im Netz" könntest du ja mal die Suchfunktion auf dieser Seite ausprobieren (oben rechts zu sehen).

Zu Batch- und Skripting-Themen haben wir schon ein oder zwei Antworten hier geben können, die so insgesamt als ganz brauchbar beurteilt wurden.

Grüße
Biber
Bitte warten ..
Ähnliche Inhalte
Datenbanken

VBA gesucht - Excel - ersetze Spalten Inhalt eines Datums ohne Punkt durch Datum mit Punkt

gelöst Frage von CaptnHowdyDatenbanken14 Kommentare

Hallo liebe Gemeinde, ich bin auf der Suche nach einem VBA Code der es mit ermöglicht die Spalte "A" ...

Batch & Shell

Batch erweiterung gesucht

Frage von Data61Batch & Shell7 Kommentare

Hallo zusammen, ich möchte gerne eine Batch Datei erweitern. Diese für derzeit die Datensicherung von 2012 R2 auf ein ...

Batch & Shell

Punkt durch Komma ersetzen

Frage von TingelTangelbatchBatch & Shell9 Kommentare

Hallo, für eine batch Datei suche ich folgende Hilfe / Code: Ich habe monatlich ca. 10 Textdatein welche Werte ...

Entwicklung

Versteckte .(Punkt)Dateien löschen

Frage von DarkJMEntwicklung3 Kommentare

Hallo zusammen, ich brauche eure Hilfe. Ich muss ein Skript schreiben das versteckte Mac Dateien also Punkt-Dateien löscht von ...

Neue Wissensbeiträge
Windows 10

"Windows 10 Pro V1903: Gruppenrichtlinie "Telemetrie zulassen" aktivierbar?"

Tipp von Snowbird vor 3 StundenWindows 101 Kommentar

Sicherheits-Tools

TrendMicro Worry-Free Business Security 10.0 SP1 - Jetzt in Deutsch verfügbar! (Windows 10 1903 Support)

Tipp von TrinXx vor 1 TagSicherheits-Tools1 Kommentar

Moin! Nach wochenlangem Warten wird Trend Micro das SP1 für WFBS 10 voraussichtlich am 26.08.19 veröffentlichen. Ich habe das ...

Hyper-V
Setup VM W2016 startet nicht in Hyper-V 2016
Erfahrungsbericht von keine-ahnung vor 2 TagenHyper-V7 Kommentare

Moin, sitze gerade über meinem neuen Server und versuche, die VM auf den Host zu prügeln. Jetzt wollte ich ...

Server-Hardware

HPE Proliant ML350P Gen8 Probleme mit Zugriff auf Raid-Volumes

Erfahrungsbericht von goscho vor 3 TagenServer-Hardware1 Kommentar

Hallo Leute, das Problemgerät: HPE ML350P G8 Windows Server 2012R2 HyperV-Host 8 x 300 GB 10K SAS HDD (1 ...

Heiß diskutierte Inhalte
Server
Ein Server ins Haus stellen. Was brauche ich dafür?
Frage von JoschiTomServer13 Kommentare

Hallo Community, ich spiele mit dem Gedanken eine Server mir zu holen. Was brauche ich dafür? Und wie sind ...

Windows Server
Ist es möglich, eine deutsche W2016 Installation mit einer UK-Lizenz zu aktivieren?
gelöst Frage von keine-ahnungWindows Server10 Kommentare

Moin at all, ist ja noch Freitag. Ich habe hier noch zwei UK OEM W2016 Standard Pakete rumfliegen Muss ...

Batch & Shell
Mittels SED Text ersetzen in Anführungszeichen
gelöst Frage von nekronBatch & Shell9 Kommentare

Moin … bin nicht wirklich der SED/regex Mensch, vielleicht kann mir jemand auf die Schnelle Helfen :) ich habe ...

LAN, WAN, Wireless
Mikrotik Gast-Wlan keine Verbindung zum Internet?
Frage von dirkschwarzLAN, WAN, Wireless8 Kommentare

Guten Morgen, habe ein wahrscheinlich einfaches Problem, bei dem ich aber nicht wirklich weiter komme Ich möchte ein Gast-Wlan ...