wolf56
Goto Top

Rename von Dateien auf alle Unterordner ausdehnen

Hallo zusammen,
habe mir eine Batchdatei geschrieben, um schnell Dateien auf einem Mediaserver verschwinden zu lassen und wiederherzustellen.
Möchte gern diese Schleifen auf alle Unterordner ausdehnen und komme nicht weiter. Wäre für Hilfe Dankbar.

Verschwinde-Batch:
@echo off

:1
if not exist *.avi goto 2
ren *.avi "*.a"
goto 1

:2
if not exist *.mp4 goto 3
ren *.mp4 "*.4"
goto 2

:3
if not exist *.mpg goto 4
ren *.mpg "*.m"
goto 3

:4
if not exist *.wmv goto 5
ren *.wmv "*.w"
goto 4

:5
if not exist *.flv goto 6
ren *.flv "*.f"
goto 5

:6
if not exist *.swf goto 7
ren *.swf "*.s"
goto 6

:7
if not exist *.mov goto 8
ren *.mov "*.v"
goto 7

:8
if not exist *.mkv goto 9
ren *.mkv "*.k"
goto 8

:9
if not exist *.ram goto fertig
ren *.ram "*.r"
goto 9

:fertig
exit
Funktioniert nur im ausgeführtem Ordner, möchte aber alle Unterordner mit durchlaufen lassen.
Hätte da jemand eine effektive Lösung?

Gruß
Wolf56

Content-ID: 257478

Url: https://administrator.de/contentid/257478

Ausgedruckt am: 19.11.2024 um 05:11 Uhr

114757
Lösung 114757 12.12.2014 aktualisiert um 09:37:20 Uhr
Goto Top
Powershell:
gci "c:\Ordner\*" -include *.mp4,*.avi,*.mpg,*.mkv,*.flv,*.mov,*.swf,*.ram,*.wmv -recurse | rename-item -NewName {"$($_.Name).x"} -Force  
und das ganze dann wieder rückgängig
gci "c:\Ordner\*.x" -recurse | rename-item -NewName {($_.Name -replace '\.x$','')} -Force  
Gruß jodel32
wolf56
wolf56 12.12.2014 aktualisiert um 10:24:58 Uhr
Goto Top
Hallo Jodel32.
Dank erst mal für die schnelle Hilfe, aber ich bin kein Programmierer und verstehe nur Bahnhof.
Wie soll das zusammen mit meiner Batchdatei funktionieren.
Habe nur kleines Programmierhirn und halte mich an das was ich noch verstehen und nachvollziehen kann.
Würde auch gern mit meiner Datei weiter arbeiten. Wie würde ich das in meine Datei einbinden?
Jede Suche auf dem Server würde weiterhin *.avi, *.mkv usw. immernoch finden. Das wollte ich verhindern.

Gruß wolf56
Xaero1982
Xaero1982 12.12.2014 aktualisiert um 10:54:52 Uhr
Goto Top
Moin,

wieso gilt der als gelöst wenn er es nicht ist?

@echo off

set ordnername=Ordnername (OHNE "") (Hier den Hauptordner angeben)  

for /f "delims=|" %%f in ('forfiles /p %ordnername% /s /m *.txt /c "cmd /c echo @path"') do ren %%f "%%~nf.t"  

Ordnernamen angeben
*.txt anpassen
"%%~nf.t" -> .t ist die gewünschte Dateiendung -> auch anpassen

Geht sicher auch eleganter face-smile

Grüße
114757
114757 12.12.2014 aktualisiert um 11:35:35 Uhr
Goto Top
Dank erst mal für die schnelle Hilfe, aber ich bin kein Programmierer und verstehe nur Bahnhof.
Dann fahr halt weiter Bus, die Bahn fährt sowieso nur noch jedes Schaltjahr face-wink
Wie soll das zusammen mit meiner Batchdatei funktionieren
Google ist dein Freund ....
powershell -ExecutionPolicy ByPass -File "C:\powershellcode.ps1"
Xaero1982
Lösung Xaero1982 12.12.2014 aktualisiert um 13:27:17 Uhr
Goto Top
Um deine Frage zu beantworten die du mir per PN gestellt hast:

Einfach das Set Ordnername weg lassen und das "/p %ordnername%"

Dann sollte es auch von dem Ordner aus gehen in dem du dich gerade befindest. Oder du übergibst den Ordnernamen an die Batch.

Einfach nur:

meinebatch.bat "ordnername"

In der Batch dann selbst mit %~1 ansprechen statt %ordnername%

Grüße
wolf56
wolf56 12.12.2014 um 13:27:10 Uhr
Goto Top
Besten Dank Xaero1982,
hab dank Deiner Hilfe alles hin bekommen, wie ich es wollte.

Gruß
wolf56
Xaero1982
Xaero1982 12.12.2014 um 13:28:50 Uhr
Goto Top
Na das freut mich doch face-smile

Grüße
wolf56
wolf56 13.12.2014 um 12:32:55 Uhr
Goto Top
Eine Kleinigkeit wäre da noch mit den Attributen der Files "/H" was ich nicht hin bekomme. Neue Files sollen versteckt sein, und umgekehrt versteckte sichtbar.

Gruß

wolf56
Xaero1982
Lösung Xaero1982 13.12.2014, aktualisiert am 16.12.2014 um 18:22:02 Uhr
Goto Top
Was meinst du eigentlich mit neue?

Verstecken bzw. nicht verstecken sollte so gehenface-sadungetestet)

Verstecken:
for /f "delims=|" %%f in ('forfiles /s /m *.* /c "cmd /c echo @path"') do ATTRIB %%f +H  

Nicht verstecken
for /f "delims=|" %%f in ('forfiles /s /m *.* /c "cmd /c echo @path"') do ATTRIB %%f -H  

Musst du dir dann zusammen basteln. Jetzt versteckt bzw. versteckt er nicht alle Dateien in dem Ordner und Unterordnern.
Wenn du es nur auf zuvor umbenannte anwenden willst musst du das *.* in *.x (x=mit passender Dateiendung ersetzen) ändern.

Grüße