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

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, 3278 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
Windows Server
gelöst Sichtbares Ausführen einer BAT-Datei mittels GPOs (10)

Frage von DasWombat1993 zum Thema Windows Server ...

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

Frage von Piotrney zum Thema Batch & Shell ...

Batch & Shell
Umbenennen entpackter Dateien nach Dateinamen der rar- zip-Datei

Frage von windows-nutzer zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(8)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte