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

Zahlen in Dateinamen entfernen, durch Zufall welche hinzufügen

Frage Entwicklung Batch & Shell

Mitglied: d4shoerncheN

d4shoerncheN (Level 2) - Jetzt verbinden

24.01.2013, aktualisiert 11:35 Uhr, 2736 Aufrufe, 13 Kommentare

Guten Morgen, Community.

Dies ist wahrscheinlich eine Aufgabe für unseren @bastla, gerne nehme ich aber auch Hilfe von anderen Personen an.

Hier mein Anliegen.

Ich habe ein Verzeichnis mit mehreren Dateien, die unterschiedlich heißen. Einige Dateinamen mit Zahlen drin, andere wieder nicht.

Nun möchte ich das alle Zahlen aus dem Dateinamen entfernt werden. Danach sollen die Dateien neu mit Zahlen versehen werden, die vorne an den Dateinamen gehangen werden.

Versuche es anhand eines Beispieles zu erklären:

Verzeichnis Musik
Datei 1: lied.mp3
Datei 2: lied-2.mp3
Datei 3: 3-lied.mp3

Script macht aus den Dateien dann zuerst "lied.mp3, lied-.mp3 und -lied.mp3". Nun soll das Script erkennen, wie viele Dateien es sind. In dem Fall 3 und fügt nun die Zahlen 1-3 bzw. 001-003 inkl. "-"vorne an die Dateinamen und das willkürlich:

Datei 1: 001-lied-.mp3
Datei 2: 002--lied.mp3
Datei 3: 003-lied.mp3

Hoffe ihr könnt mir helfen.

Gruß
d4shoerncheN
Mitglied: colinardo
24.01.2013, aktualisiert um 13:19 Uhr
Das müsste gehen:
(Verzeichnis mit den MP3 Dateien in Zeile 3 eintragen)
01.
@echo off 
02.
setlocal ENABLEDELAYEDEXPANSION 
03.
set searchdir=C:\Musik\ 
04.
set searchextension=*.mp3 
05.
set counter=1 
06.
cd /d "%searchdir%" 
07.
for /f "tokens=*" %%i IN ('dir /b /A-D "%searchdir%%searchextension%"') DO @( 
08.
	call :removenumbers "%%i" 
09.
	echo !filename! 
10.
        move "%%i" "!filename!" 
11.
	set /A counter=!counter!+1 
12.
13.
goto end 
14.
 
15.
:removenumbers 
16.
set filename=%~1 
17.
set extension=%filename:~-4% 
18.
set filename=%filename:~,-4% 
19.
for /L %%k in (0,1,9) DO @(  
20.
	set filename=!filename:%%k=! 
21.
22.
set filename=00%counter%-%filename%%extension% 
23.
goto :eof 
24.
 
25.
:end 
26.
pause
Bitte warten ..
Mitglied: d4shoerncheN
24.01.2013 um 11:13 Uhr
Hallo, colinardo.

Vielen Dank für die schnelle Antwort. In der Shell zeigt er die Dateien nun wie gewünscht an, bis dahin funktioniert es also.

Gruß
Bitte warten ..
Mitglied: colinardo
24.01.2013 um 11:15 Uhr
Zur Info: Habe das Script oben mit der Umbenennen Funktion ergänzt

Grüße Uwe
Bitte warten ..
Mitglied: d4shoerncheN
24.01.2013, aktualisiert um 11:22 Uhr
Hallo,

habe ich auch gerade versucht. Sowohl mit als auch ohne
rem ren %%i !filename!
funktioniert es. Dateien zeigt er korrekt an, umbenennen tut er leider nicht.

NACHTRAG
Mein Fehler, funktioniert nun. Vielen Dank
Habe die komplette Zeile entfernt, nicht nur das "rem".

NACHTRAG 2
Gerade bemerkt, Script funktioniert leider nicht, wenn in dem Dateinamen ein Leerzeichen ist. Kann man eventuell das Script anpassen, dass er aus Leerzeichen "-" macht?

Gruß
Bitte warten ..
Mitglied: colinardo
24.01.2013, aktualisiert um 11:28 Uhr
Jetzt geht es mit Leerzeichen im Namen ... sorry

Ich lege Dir folgende Seite ans Herz (Alles rund um Stringmanipulationen per Batch):
http://www.dostips.com/DtTipsStringManipulation.php#Snippets.Remove
Bitte warten ..
Mitglied: d4shoerncheN
24.01.2013 um 11:27 Uhr
Bekomme
01.
001-------test.txt 
02.
002------test-.txt 
03.
003------test.txt 
04.
004-Neues 
05.
Das System kann die angegebene Datei nicht finden. 
06.
Drücken Sie eine beliebige Taste . . .
Bitte warten ..
Mitglied: colinardo
24.01.2013, aktualisiert um 13:19 Uhr
Ahhhh... hatte das "tokens=* in der ersten for-Schleife vergessen.
Habe das Script oben korrigiert jetzt läufts mit Leerzeichen im Namen!

eine kürzere Variante noch als Nachtrag:

01.
@echo off 
02.
setlocal ENABLEDELAYEDEXPANSION 
03.
set searchdir=C:\Musik\ 
04.
set searchextension=*.mp3 
05.
set counter=1 
06.
cd /d "%searchdir%" 
07.
for /f "tokens=*" %%i IN ('dir /b /A-D "%searchdir%%searchextension%"') DO ( 
08.
	set filename=%%i 
09.
 	set extension=!filename:~-4! 
10.
	set filename=!filename:~,-4! 
11.
	for /L %%k in (0,1,9) DO @(  
12.
		set filename=!filename:%%k=! 
13.
14.
	set finalname=00!counter!-!filename!!extension! 
15.
	echo !finalname! 
16.
        move "%%i" "!finalname!" 
17.
	set /A counter=!counter!+1 
18.
)
Bitte warten ..
Mitglied: d4shoerncheN
24.01.2013 um 12:20 Uhr
Funktioniert, besten Dank.

Gruß
d4shoerncheN
Bitte warten ..
Mitglied: 106543
24.01.2013, aktualisiert um 12:33 Uhr
Hi du,

hab bei euch mal mitgelesen und muss leider sagen, dass es bei mir nicht funktioniert
ja ich habe den Pfad angepasst auf C:\
ja ich hab da eine Testdatei namens Testosteron.mp3 erstellt.
habs dann mal anlaufen lassen und erstmal nichts passiert.
Nachdem ich dann ein "Pause" eingefügt habe, gibt er mir den richtigen neuen Dateinamen aus (logisch ist ja echo) und in der nächsten Zeile schreibt er
01.
Das System kann die angegebene Datei nicht finden.
liegt der fehler bei mir oder beim Skript ?
Nebenbei wahnsinnig schnell das Ganze zusammengebaut meinen Respekt

Grüße
Exzellius

PS: hab die verkürzte Version des Skriptes genommen

[EDIT]
Entwarnung !
Hab anscheinend nicht die Berechtigung zum Umbenennen auf C:\ -_-
ich hab die Datei zwar selbst erstellt, aber egal.
Sobald ich die Datei in meine Eigenen Dateien gelegt habe funktioniert alles wie gewünscht.
[/EDIT]
Bitte warten ..
Mitglied: colinardo
24.01.2013 um 12:32 Uhr
dann musst du noch auf das jeweilige Laufwerk wechseln wenn du das Script von einem anderen Laufwerk aus aufrufst:
z.b mit
01.
c:
baue das noch oben in das Script mit ein ...
Bitte warten ..
Mitglied: 106543
24.01.2013 um 12:34 Uhr
Oder das :D jo danke dir hast mir sehr geholfen.

Grüße
Exzellius
Bitte warten ..
Mitglied: bastla
24.01.2013 um 13:14 Uhr
@ colinardo
Anstelle von Kunststücken wie
01.
%searchdir:~0,2% 
02.
cd "%searchdir%"
(wobei Du Dich auch noch darauf verlassen musst, dass der Pfad tatsächlich mit einer Laufwerksangabe beginnt) würde sich vielleicht ein
cd /d "%searchdir%"
aufdrängen (wenn schon kein PushD / PopD benötigt werden sollte) ...

Grüße
bastla
Bitte warten ..
Mitglied: colinardo
24.01.2013 um 13:18 Uhr
merci @bastla , man lernt halt immer was dazu !
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
gelöst Zusätzlichen Windows Server 2012R2 Domänencontroller hinzufügen (5)

Frage von Mar-west zum Thema Windows Server ...

Batch & Shell
Dateinamen nach Zeichnen abschneiden - Batch-Shell (9)

Frage von cberndt zum Thema Batch & Shell ...

Batch & Shell
gelöst Appx aus Image auslesen und entfernen (9)

Frage von Markus2016 zum Thema Batch & Shell ...

CPU, RAM, Mainboards
CPU Lüfter von CPU entfernen (6)

Frage von uridium69 zum Thema CPU, RAM, Mainboards ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...