Verwandte Beiträge
- Stapelverarbeitung [*.bat-Datei, welche andere *.bat-Dateien wiederum ausführen soll] (9)
- php script zeitgesteuert über bat Datei aufrufen (13)
- BOOT.INI - Eine .Bat-Datei als Betriebssystem nutzen. (12)
- bat datei erstellen um eine indxieung durch zu führen (2)
- Zeile aus BAT Datei in Log File schreiben (4)
- Kann .vbs Datei unter Windows XP Home-Edition nicht öffnen ! (4)
- Bat Datei ausführen wenn ipnetz xy anliegt (2)
- Einträge einer Bat Datei per eingabeaufforderungs bat ändern Rat beim Feinschliff benötigt (19)
- Bat-Datei zum löschen des kompletten Inhalts eines Ordners (9)
- bat.datei funktioniert nicht (3)
- bat datei im hintergrund als prozess laufen lassen (8)
- wie kann ich per bat datei ip adresse und andere angaben gleichzeitig ändern (10)
- bat-datei mehrere echo in eine zeile ausgeben (4)
- Bat Datei Auslesen,Vergleichen ,löschen, (9)
- bat Datei mit verzeichnis aus ini Datei (7)
- VBA 97 - BAT-Datei erstellen (2)
- Netzwerkverbindung unter WXP mit BAT-Datei starten und beenden (8)
- programmieren lernen mit .bat dateien (9)
- Einstellungen von INI-Datei für BAT-Datei verwenden (6)
- mehr >>
Frage im Bereich
Wie kann ich mit einer .bat Datei die Namen verschiedener Dateien austauschen?
Geschrieben von KintaroOe am 2010/01/15 um 14:52:33 Uhr, 2 Antworten, 590 Aufrufe, Status: gelöst
OS: Windows XP 32 bit
Batch-Neuling 
Hallo,
ich stehe vor folgendem Problem
In einem Ordner liegen z.B. 3 Dateien mit den Namen:
slide1.jpg
slide2.jpg
slide3.jpg
Außerdem ein Verzeichnis namens "old".
Dort befinden sich ebenfalls 3 Dateien mit kryptischen Namen, z.B.:
1_1_f09f7f84i3n.jpg
1_2_p9r1z5b8c2.jpg
2_1_q1v9h3j7k6.jpg
Nun möchte ich die Dateien vom Hauptordner (slide1.jpg, ...) in die Dateien aus dem "old" Ordner umbenennen (slide1.jpg soll 1_1_f09f7f84i3n.jpg heißen, usw.).
Am liebsten wäre mir eine .bat Datei die das automatisch macht.
Mein Lösungsansatz:
Die Dateinamen in zwei Textdateien schreiben
Code:
@echo off
dir *.jpg /b >rename.txt
dir old /b >original.txt
und anschließend umbenennen... und hier ist auch das Problem:
FOR /F %%i in (rename.txt) do (
FOR /F %%j in (original.txt) do (
SET FILES=%FILES% %%j
echo %%j
)
echo ren %%i
)
Ich müsste irgendwie die Variable %%j speichern können um sie unten ans %%i anzuhängen...aber das funktioniert nicht. Habt ihr eine Idee?
ich stehe vor folgendem Problem
In einem Ordner liegen z.B. 3 Dateien mit den Namen:
slide1.jpg
slide2.jpg
slide3.jpg
Außerdem ein Verzeichnis namens "old".
Dort befinden sich ebenfalls 3 Dateien mit kryptischen Namen, z.B.:
1_1_f09f7f84i3n.jpg
1_2_p9r1z5b8c2.jpg
2_1_q1v9h3j7k6.jpg
Nun möchte ich die Dateien vom Hauptordner (slide1.jpg, ...) in die Dateien aus dem "old" Ordner umbenennen (slide1.jpg soll 1_1_f09f7f84i3n.jpg heißen, usw.).
Am liebsten wäre mir eine .bat Datei die das automatisch macht.
Mein Lösungsansatz:
Die Dateinamen in zwei Textdateien schreiben
Code:
@echo off
dir *.jpg /b >rename.txt
dir old /b >original.txt
und anschließend umbenennen... und hier ist auch das Problem:
FOR /F %%i in (rename.txt) do (
FOR /F %%j in (original.txt) do (
SET FILES=%FILES% %%j
echo %%j
)
echo ren %%i
)
Ich müsste irgendwie die Variable %%j speichern können um sie unten ans %%i anzuhängen...aber das funktioniert nicht. Habt ihr eine Idee?
Veröffentlichen Sie diesen Beitrag in Ihrem sozialen Netzwerk
2 Antworten
2
KintaroOe schreibt am 2010/01/15 um 16:11:46 Uhr
das funktioniert super, danke!
Allerdings darf ich keine absoluten Pfade verwenden, geht das auch mit relativen? Einzig der "old" Ordner ist immer im Verzeichnis der .bat Datei.
grüße
kintaro
EDIT:
jetzt funktioniert es:
@echo off & setlocal
set "Unterordner=org"
set "Typ=jpg"
set "Liste=%temp%\original.txt"
dir /b /a-d /on "%Unterordner%\*.%Typ%" 2>nul|findstr /n "^">"%Liste%"
for /f "tokens=1* delims=:" %%i in ('dir /b /a-d /on "*.%Typ%" 2^>nul^|findstr /n "^"') do (
for /f "tokens=1* delims=:" %%a in ('findstr /b "%%i:" "%Liste%"') do if "%%b" neq "" ren "%%j" "%%b"
)
popd
del "%Liste%"
pause
--
nochmal danke =)
Allerdings darf ich keine absoluten Pfade verwenden, geht das auch mit relativen? Einzig der "old" Ordner ist immer im Verzeichnis der .bat Datei.
grüße
kintaro
EDIT:
jetzt funktioniert es:
@echo off & setlocal
set "Unterordner=org"
set "Typ=jpg"
set "Liste=%temp%\original.txt"
dir /b /a-d /on "%Unterordner%\*.%Typ%" 2>nul|findstr /n "^">"%Liste%"
for /f "tokens=1* delims=:" %%i in ('dir /b /a-d /on "*.%Typ%" 2^>nul^|findstr /n "^"') do (
for /f "tokens=1* delims=:" %%a in ('findstr /b "%%i:" "%Liste%"') do if "%%b" neq "" ren "%%j" "%%b"
)
popd
del "%Liste%"
pause
--
nochmal danke =)





Unter der Voraussetzung, dass sich im "old"-Verzeichnis mindestens so viele Dateien wie im Hauptverzeichnis befinden und die Zuordnung anhand der alphabetischen Sortierung erfolgen kann, etwa so:
Grüße
bastla