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-Key: 257478

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

Printed on: April 25, 2024 at 19:04 o'clock

Mitglied: 114757
Solution 114757 Dec 12, 2014 updated at 08:37:20 (UTC)
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
Member: wolf56
wolf56 Dec 12, 2014 updated at 09:24:58 (UTC)
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
Member: Xaero1982
Xaero1982 Dec 12, 2014 updated at 09:54:52 (UTC)
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
Mitglied: 114757
114757 Dec 12, 2014 updated at 10:35:35 (UTC)
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"
Member: Xaero1982
Solution Xaero1982 Dec 12, 2014 updated at 12:27:17 (UTC)
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
Member: wolf56
wolf56 Dec 12, 2014 at 12:27:10 (UTC)
Goto Top
Besten Dank Xaero1982,
hab dank Deiner Hilfe alles hin bekommen, wie ich es wollte.

Gruß
wolf56
Member: Xaero1982
Xaero1982 Dec 12, 2014 at 12:28:50 (UTC)
Goto Top
Na das freut mich doch face-smile

Grüße
Member: wolf56
wolf56 Dec 13, 2014 at 11:32:55 (UTC)
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
Member: Xaero1982
Solution Xaero1982 Dec 13, 2014, updated at Dec 16, 2014 at 17:22:02 (UTC)
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