Top-Themen

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, 1456 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
Umbenennen von Dateien mit Ordnernamen und Unterordner
gelöst Frage von Xaero1982Batch & Shell10 Kommentare

Moin Zusammen, folgendes Problem: Ich habe einen Ordner. Nennen wir ihn "Fotos" In diesem Ordner sind dann Zig Unterordner ...

Batch & Shell
Dateien mit bestimmten Namen in allen Unterordnern umbenennen
Frage von koehneBatch & Shell2 Kommentare

Hi, ich bräuchte mal fix eure Hilfe, weil ich nicht weiterkomme. Ich habe in einem Ordner mehrere Unterordner. In ...

Batch & Shell
Umbenennen von Ordnernamen (anhand von Zeitstempel)
gelöst Frage von Zero90Batch & Shell7 Kommentare

Hallo, Es ist mal wieder so weit. Ich brauch wieder mal eure Hilfe. Momentan versuche ich eine Batch zu ...

Batch & Shell
Ordnerinhalt mit Ordnernamen umbenennen
gelöst Frage von RotnasenkaterBatch & Shell5 Kommentare

Servus, liebe Gemeinde! Ich habe ein kleines Anliegen und keienrlei Ahnung von Batch-Programmierung, deswegen hoffe ich auf Hilfe von ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 6 StundenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 10 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 10 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 13 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement21 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...

Windows Server
Anmeldung direkt am DC nicht möglich
Frage von ThomasGrWindows Server15 Kommentare

Hallo, ich habe bei unserem Server 2016 Standard ein Problem. Keine Ahnung wie das auf einmal passiert ist. Ich ...