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

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, 1402 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?

Mit freundlichen Grüßen
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?

Mit freundlichen Grüßen
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.

Mit freundlichen Grüßen
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

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

Frage von Booster07 zum Thema Batch & Shell ...

Batch & Shell
gelöst Ordnerinhalt mit Ordnernamen umbenennen (5)

Frage von Rotnasenkater zum Thema Batch & Shell ...

Microsoft Office
gelöst Per VBA im Verzeichniss dateien mit Wildcard umbenennen (4)

Frage von usenussi zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (15)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...