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

Dateien gleich Ordnernamen umbenennen (auch in allen Unterordnern)

Frage Entwicklung Batch & Shell

Mitglied: OOmatrixOO

OOmatrixOO (Level 1) - Jetzt verbinden

02.08.2014, aktualisiert 03.12.2014, 1448 Aufrufe, 14 Kommentare

Hallo.

Ich möchte in einem speziellen Ordner in ALLEN Unterordnern ALLE Dateien nach ihren Ordnernamen umbenennen.

Ich habe mir schon diese Version von bastla angesehen: http://www.administrator.de/frage/batch-dateien-mit-ordnernamen-umbenen ...

@echo off & setlocal  
FOR /F "delims=" %%i in ('dir /B /AD 2^>nul') do (  
	FOR /F "delims=" %%j in ('dir "%%i" /B /A-D 2^>nul') do call:dorename "%%i" "%%~nj" "%%~xj"  
)  
goto:eof  
 
:dorename  
set "dirname=%~1"  
set "filename=%~2"  
set "fileext=%~3"  
 
set "endname=%dirname:.= %"  
set /a Ind=0  
 
:namecheck  
if not exist "%dirname%\%endname%%fileext%" goto :doit  
set /a Ind+=1  
set "endname=%dirname:.= %(%Ind%)"  
goto:namecheck  
 
:doit  
ren "%dirname%\%filename%%fileext%" "%endname%%fileext%"  
goto:eof

Dabei habe ich noch 2 Probleme:
1. Ich muss die .bat Datei in dem Ordner ablegen, wo ich auch die Dateien umbenennen möchte. Mein Ziel wäre es aber, die Datei zentral abzulegen. Es müsste also der Pfad zum Ordner mit den Dateien eingefügt werden.

2. Es wird nur auf erster Ordnerebene umbenannt. Ich möchte aber auch alle Unterordner mit einbeziehen.

Danke für eure Hilfe.

Mit freundlichen Grüßen
Mitglied: bastla
LÖSUNG 02.08.2014, aktualisiert 03.08.2014
Haloo OOmatrixOO!

Das könnte angepasst (und oberflächlich getestet) etwa so aussehen:
01.
@echo on & setlocal 
02.
if [%1]==[] echo Kein Startordner angegeben! & pause & goto :eof 
03.
 
04.
FOR /d /r "%~1" %%i in (*) do ( 
05.
    pushd "%%i" 
06.
    FOR /F "delims=" %%j in ('dir /B /A-D 2^>nul') do call:dorename "%%~nxi" "%%~nj" "%%~xj" 
07.
    popd 
08.
09.
goto:eof 
10.
 
11.
:dorename 
12.
set "dirname=%~1" 
13.
set "filename=%~2" 
14.
set "fileext=%~3" 
15.
 
16.
set "endname=%dirname:.= %" 
17.
set /a Ind=0 
18.
 
19.
:namecheck 
20.
if not exist "%endname%%fileext%" goto :doit 
21.
set /a Ind+=1 
22.
set "endname=%dirname:.= %(%Ind%)" 
23.
goto:namecheck 
24.
 
25.
:doit 
26.
ren "%filename%%fileext%" "%endname%%fileext%" 
27.
goto:eof
Grüße
bastla

P.S.: Wenn Du mehrere Zeilen Code postest, besser nicht type="plain", sondern nur <code> verwenden ...
Bitte warten ..
Mitglied: OOmatrixOO
02.08.2014 um 21:01 Uhr
Hallo bastla,

ich stehe wohle gerade auf dem Schlauch. Wo muss ich denn den Startordner angeben?

MfG
Bitte warten ..
Mitglied: bastla
LÖSUNG 02.08.2014, aktualisiert 08.08.2014
Hallo OOmatrixOO!

Der Batch erwartet den Startordner als Parameter beim Aufruf - so kannst Du jeden beliebigen Ordner bearbeiten, ohne den Code zu ändern.

Alternativ kannst Du die Zeile 2 entfernen und die Zeile 4 auf
FOR /d /r "D:\Dein spezieller Startordner" %%i in (*) do (
ändern.

Grüße
bastla
Bitte warten ..
Mitglied: OOmatrixOO
03.08.2014 um 11:03 Uhr
Manchmal hat man echt Tomaten auf den Augen und denkt nicht an das einfache.

Danke dir.
Bitte warten ..
Mitglied: OOmatrixOO
08.08.2014 um 17:31 Uhr
Hallo bastla.

Wie kann ich noch eine Bedingung mit einbauen? Also es soll der Ordner nicht bearbeitet werden, wenn sich darin eine Datei mit Endung .xyz befindet.
Bitte warten ..
Mitglied: bastla
LÖSUNG 08.08.2014, aktualisiert 03.12.2014
Hallo OOmatrixOO!

Das könnte etwa so gehen:
01.
FOR /d /r "D:\Dein spezieller Startordner" %%i in (*) do if not exist "%%~i\*.xyz" ( 
02.
    pushd "%%i" 
03.
    FOR /F "delims=" %%j in ('dir /B /A-D 2^>nul') do call:dorename "%%~nxi" "%%~nj" "%%~xj" 
04.
    popd 
05.
)
Grüße
bastla
Bitte warten ..
Mitglied: hackyli
08.08.2014 um 22:16 Uhr
Ich hätte ne Frage für ne Ergänzung für das Script.
Ich würde gerne nur bestimmte Dateiendungen umbennen (z.B. PDF-Dateien) und danach die umbenannten PDF Dateien in einen anderen Ordner verschieben.

Könnte mir da jemand dabei helfen?
Bitte warten ..
Mitglied: bastla
08.08.2014 um 22:25 Uhr
Hallo hackyli (eine kurze Begrüßung Deinerseits wäre ja vielleicht auch drin gewesen)!
Ich würde gerne nur bestimmte Dateiendungen umbennen (z.B. PDF-Dateien)
Ändere die Zeile 6 auf
FOR /F "delims=" %%j in ('dir /B /A-D *.pdf 2^>nul') do call:dorename "%%~nxi" "%%~nj" "%%~xj"
und danach die umbenannten PDF Dateien in einen anderen Ordner verschieben.
Baue zwischen Zeile 6 und 7 etwas in der Art
move *.pdf "D:\Dein Ziel-Ordner\"
ein. Achtung: Wenn es im Zielordner (muss übrigens schon existieren) schon gleichnamige Dateien gibt, werden diese kommentarlos überschrieben ...

(Trotzdem) Grüße
bastla
Bitte warten ..
Mitglied: hackyli
09.08.2014 um 10:36 Uhr
Sorry. Vielen Dank für die Hilfe. War nicht böse gemeint

Hat wunderbar funktioniert.

Ein dickes HALLO von mir.
Bitte warten ..
Mitglied: OOmatrixOO
03.12.2014 um 18:15 Uhr
Hallo bastla,

deine Lösung läuft immer noch perfekt.
Ich habe dazu nun noch eine Frage.

Das ist die Batch Datei:
01.
echo %Date% %Time% Dateien umbenennen:>>D:\Movies\Log\%date%.log 
02.
@echo on & setlocal  
03.
FOR /d /r "D:\Movies" %%i in (*) do if not exist "%%~i\*.bak" ( 
04.
    pushd "%%i"  
05.
    FOR /F "delims=" %%j in ('dir /B /A-D 2^>nul') do call:dorename "%%~nxi" "%%~nj" "%%~xj" 
06.
    popd  
07.
)  
08.
goto:eof  
09.
 
10.
:dorename  
11.
set "dirname=%~1"  
12.
set "filename=%~2"  
13.
set "fileext=%~3"  
14.
 
15.
set "endname=%dirname:.= %"  
16.
 
17.
set /a Ind=0  
18.
 
19.
:namecheck  
20.
if not exist "%endname%%fileext%" goto :doit  
21.
set /a Ind+=1  
22.
set "endname=%dirname:.= %(%Ind%)"  
23.
goto:namecheck  
24.
 
25.
:doit  
26.
ren "%filename%%fileext%" "%endname%%fileext%" && echo "%filename%%fileext%" nach "%endname%%fileext%">>D:\Movies\Log\%date%.log 
27.
goto:eof 
28.
 
Wie kann ich noch die Bedingung einfügen, dass zusätzlich der Ordner "D:\Movies\unbearbeitet" ignoriert wird?

MfG
Bitte warten ..
Mitglied: bastla
03.12.2014 um 20:21 Uhr
Hallo OOmatrixOO!

Ungetestet etwa so:
01.
echo %Date% %Time% Dateien umbenennen:>>D:\Movies\Log\%date%.log 
02.
@echo on & setlocal 
03.
FOR /d /r "D:\Movies" %%i in (*) do if not exist "%%~i\*.bak" ( 
04.
    if /i "%%~fi" neq "D:\Movies\unbearbeitet" ( 
05.
        pushd "%%i" 
06.
        FOR /F "delims=" %%j in ('dir /B /A-D 2^>nul') do call:dorename "%%~nxi" "%%~nj" "%%~xj" 
07.
        popd 
08.
09.
)  
10.
goto:eof  
11.
 
12.
REM Rest wie gehabt
Falls auch Unterordner von "D:\Movies\unbearbeitet" ausgeschlossen werden sollen:
01.
echo %Date% %Time% Dateien umbenennen:>>D:\Movies\Log\%date%.log 
02.
@echo on & setlocal 
03.
FOR /d /r "D:\Movies" %%i in (*) do if not exist "%%~i\*.bak" ( 
04.
    echo "%%~fi"|findstr /ivb "D:\Movies\unbearbeitet">nul && ( 
05.
        pushd "%%i" 
06.
        FOR /F "delims=" %%j in ('dir /B /A-D 2^>nul') do call:dorename "%%~nxi" "%%~nj" "%%~xj" 
07.
        popd 
08.
09.
)  
10.
goto:eof  
11.
 
12.
REM Rest wie gehabt
Grüße
bastla
Bitte warten ..
Mitglied: OOmatrixOO
28.12.2014 um 21:09 Uhr
Zitat von bastla:

Hallo OOmatrixOO!

Ungetestet etwa so:
01.
echo %Date% %Time% Dateien umbenennen:>>D:\Movies\Log\%date%.log 
02.
> @echo on & setlocal 
03.
> FOR /d /r "D:\Movies" %%i in (*) do if not exist "%%~i\*.bak" ( 
04.
>     if /i "%%~fi" neq "D:\Movies\unbearbeitet" ( 
05.
>         pushd "%%i" 
06.
>         FOR /F "delims=" %%j in ('dir /B /A-D 2^>nul') do call:dorename "%%~nxi" 
07.
> "%%~nj" "%%~xj" 
08.
>         popd 
09.
>     ) 
10.
> )  
11.
> goto:eof  
12.
>  
13.
> REM Rest wie gehabt 
14.
> 
Falls auch Unterordner von "D:\Movies\unbearbeitet" ausgeschlossen werden sollen:
01.
echo %Date% %Time% Dateien umbenennen:>>D:\Movies\Log\%date%.log 
02.
> @echo on & setlocal 
03.
> FOR /d /r "D:\Movies" %%i in (*) do if not exist "%%~i\*.bak" ( 
04.
>     echo "%%~fi"|findstr /ivb "D:\Movies\unbearbeitet">nul && ( 
05.
>         pushd "%%i" 
06.
>         FOR /F "delims=" %%j in ('dir /B /A-D 2^>nul') do call:dorename "%%~nxi" 
07.
> "%%~nj" "%%~xj" 
08.
>         popd 
09.
>     ) 
10.
> )  
11.
> goto:eof  
12.
>  
13.
> REM Rest wie gehabt 
14.
> 
Grüße


Hallo bastla,

Die 2. Variante, mit dem Ausschließen der Unterordner funktioniert leider nicht. Es werden trotzdem die Dateien mit umbenannt. Da auch, wenn die Datei direkt im Ordner "unbearbeitet" liegt.

Variante 1 funktioniert. Aber Variante 2 wäre natürlich besser. Kannst du mir da weiter helfen?

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: bastla
28.12.2014 um 23:52 Uhr
Hallo OOmatrixOO!

Sollte mit folgender Zeile 4 funktionieren:
echo "%%~fi"|findstr /iv "D:\Movies\unbearbeitet">nul && (
Grüße
bastla
Bitte warten ..
Mitglied: OOmatrixOO
29.12.2014 um 11:09 Uhr
Super, Danke das funktioniert.

MfG
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Dateiname entsprechend einem um x-Ebenen übergeordeten Ordnernamen umbenennen (3)

Frage von Booster07 zum Thema Batch & Shell ...

Viren und Trojaner
WannaCry - wiederhergestellte Dateien umbenennen (7)

Frage von MasterPhil zum Thema Viren und Trojaner ...

Batch & Shell
gelöst Alle Dateien in einem Ordner umbenennen (5)

Frage von l.scheper zum Thema Batch & Shell ...

Neue Wissensbeiträge
Firewall

PfSense Repository für Version 2.3.x

(2)

Information von Dobby zum Thema Firewall ...

LAN, WAN, Wireless

WPA-2 hat erste Risse: KRACK

(4)

Information von the-buccaneer zum Thema LAN, WAN, Wireless ...

Hardware

GPD Pocket: Winziger Laptop für Wenig Tipper

(1)

Information von pelzfrucht zum Thema Hardware ...

Windows 10

Microsoft veröffentlicht das "Fall Creators Update

(10)

Information von Penny.Cilin zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Windows Server
gelöst Gruppenrichtlinie greift nicht zu! (23)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (20)

Frage von sunics zum Thema Hosting & Housing ...

Windows 7
gelöst Windows 7 Anmeldedomäne festlegen (13)

Frage von flotaut zum Thema Windows 7 ...