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, 3273 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
gelöst Sichtbares Ausführen einer BAT-Datei mittels GPOs (10)

Frage von DasWombat1993 zum Thema Windows Server ...

Batch & Shell
Namen mehrerer Dateien ergänzen per Batchdatei (2)

Frage von adventureman2 zum Thema Batch & Shell ...

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

Frage von Xaero1982 zum Thema Microsoft ...

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

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...