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

Wie kann ich mit einer .bat Datei die Namen verschiedener Dateien austauschen?

Frage Entwicklung Batch & Shell

Mitglied: KintaroOe

KintaroOe (Level 1) - Jetzt verbinden

15.01.2010, aktualisiert 14:53 Uhr, 3286 Aufrufe, 2 Kommentare

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?
Mitglied: bastla
15.01.2010 um 15:50 Uhr
Hallo KintaroOe und willkommen im Forum!

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:
01.
@echo off & setlocal 
02.
set "Hauptordner=D:\Haupt" 
03.
set "Unterordner=D:\Haupt\old" 
04.
set "Typ=jpg" 
05.
 
06.
set "Liste=%temp%\Namensliste_old.txt" 
07.
dir /b /a-d /on "%Unterordner%\*.%Typ%" 2>nul|findstr /n "^">"%Liste%" 
08.
 
09.
pushd "%Hauptordner%" 
10.
for /f "tokens=1* delims=:" %%i in ('dir /b /a-d /on "%Hauptordner%\*.%Typ%" 2^>nul^|findstr /n "^"') do ( 
11.
    for /f "tokens=1* delims=:" %%a in ('findstr /b "%%i:" "%Liste%"') do if "%%b" neq "" echo ren "%%j" "%%b" 
12.
13.
popd 
14.
del "%Liste%" 
15.
pause
Wegen des "echo" vor dem "ren" wird die Umbenennung (zum Testen) erst einmal nur angezeigt - wenn das Ergebnis vernünftig aussieht, dieses "echo" (und "pause" am Ende) einfach entfernen ...

Grüße
bastla
Bitte warten ..
Mitglied: KintaroOe
15.01.2010 um 16:11 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 =)
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Ordner und Datei Name gleich (BATCH) (12)

Frage von clragon zum Thema Batch & Shell ...

Batch & Shell
Mehrere.csv Dateien zusammenfügen zu einer Datei mit bat (4)

Frage von Piotrney zum Thema Batch & Shell ...

Batch & Shell
gelöst Dateien bezugnehmend auf Teil des Namens verschieben (8)

Frage von pbelcl zum Thema Batch & Shell ...

Batch & Shell
Version in Dateinamen entfernen per BAT Datei (6)

Frage von snoopy-do zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Erkennung und -Abwehr

Ccleaner-Angriff war nur auf große Unternehmen gemünzt

(10)

Information von Lochkartenstanzer zum Thema Erkennung und -Abwehr ...

Sicherheit

Eventuell neue Lücke in Intels ME

Information von sabines zum Thema Sicherheit ...

Heiß diskutierte Inhalte
Humor (lol)
Freidach Beitrag (33)

Frage von Penny.Cilin zum Thema Humor (lol) ...

Lizenzierung
Programm soll in verschiedenen Versionen lizenziert sein (20)

Frage von Yanmai zum Thema Lizenzierung ...

Windows 7
SSD - Win7 Lags (19)

Frage von ph5555 zum Thema Windows 7 ...