CMD Verzeichnissübergreifend Dateiendung ändern?

3 Antworten

@echo off
  rem  hier pfad zum "durcharbeiten" angeben...
set "filePath=meinPfad"




  rem dieser Abschnitt ist lediglich zu Demozwecken und kann entfernt werden
  rem und erzeugt einen Pfad mit Unterordner und Textdateien
md "%filePath%"
md "%filePath%\subfolder"
for /l %%a in (1,1,10) do (
    echo. >"%filePath%\meinText1%%a.txt"
    echo. >"%filePath%\subfolder\meinText2%%a.txt"
)
dir /b /s "%filePath%\*.txt"
  rem ende Deomo erzeugen.




  rem diese Schleife durchsucht den oben angegebenen Pfad nach Dateien  mit  der Extension .txt
for /f "tokens=*" %%a in ('dir /b /s "%filePath%\*.txt"') do (
      rem ..und benennt die gefundenen Datein nach name.docx um.
    ren "%%a" "%%~na.docx"
)


pause
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
Erzesel  04.07.2019, 08:14

PS: nicht auf die ganze Festplatte anwenden. Es gibt auch andere Programme, welche durchaus Dateien mit der Endung .txt erwarten. Diese werden dann nicht mehr in gewünschter Weise funktionieren.

Anschließend würdest Du hier Fragen warum dieses oder jenes Programm/Spiel nicht mehr funktioniert

0

REM Als Direkte Eingabe in der Kommandozeile.
:: FOR /R .\ %X IN (*.txt) DO REN "%X" *.docx

REM Als Batch-Datei, aus Grundverzeichnis starten.
FOR /R .\ %%X IN (*.txt) DO REN "%%X" *.docx

Könnte es das sein, was du suchst?

Erzesel  04.07.2019, 08:04

Die Angabe von *.ext als Ziel kann unter gewissen seltenen Umständen zu recht unerwünschten Ergebnissen führen.

Bei ren sollte man tunlichst auf auf Wildcards verzichten , da ren einige Bugs in Bezug auf diese hat.

Da durch die Schleife bereits alle Namen komplett zur Verfügung stehen kann man den Zielnamen auch konkret übergeben: ren "%%X" "%%~nX.docx"

...und fährt auf Nummer sicher.

FOR /R .\ %%X IN (*.txt) DO ... for /r hat ebenfalls einige interne Fehler (leserecursion bei großen Dateimengen) . Deshalb besser mit for /f "tokens=*" %%X in ('dir /b /s "*.txt" ') do ... arbeiten.

2
mondai  05.07.2019, 01:20
@Erzesel

Den Namen separat zu bearbeiten kam mir erst auch in den Sinn.
Doch hier liegt die Würze wohl mal nicht in der Kürze. ;p
Kann dem unter diesen Gesichtpunkten nur zustimmen.
Die internen Fehler waren mir nicht weiter bekannt.
Danke daher für den Hinweis.

1
Erzesel  05.07.2019, 07:06
@mondai

Wegen geschehen...👍

Der Bug besteht bereits seit es noch das 8.3 Dateisystem gab.

Das Problem bei Batch ist, das irgendwelche abseitigen Reaktionen eines Befehls sehr schnell für andere Zwecke "misbraucht" werden und somit wieder nützlich sind. Etwas zu Fixen würde Bedeuten das andere Sachen dann nicht mehr funktionieren.

Dies dürfte ein Grund sein weshalb Fehler in Batchbefehlen generell über Jahrzehnte erhalten bleiben.

0

Du könntest eine Batch-Datei schreiben, sofern die Endungen automatisiert (also nicht individuell) geändert werden werden können:

https://www.google.com/search?client=firefox-b-d&q=datei+umbennenn+mit+batch

Woher ich das weiß:Berufserfahrung – Langjährige Erfahrung als IT-Systemtechniker