Frage

Gibt es eine Möglichkeit der Batch-Dateien in Unterverzeichnisse umbenennen?

Zum Beispiel:

Umbenennen *.html in einem Ordner *.htm, welche Verzeichnisse und Unterverzeichnisse hat.

War es hilfreich?

Lösung

Windows-Eingabeaufforderung: (Wenn innerhalb einer Batch-Datei, ändert% x zu %% x)

for /r %x in (*.html) do ren "%x" *.htm

Das funktioniert auch in der Mitte der Dateien für das Umbenennen

for /r %x in (website*.html) do ren "%x" site*.htm

Andere Tipps

Für Fenster, das ist das beste Werkzeug, das ich gefunden habe:

http://www.1-4a.com/rename/

Es kann alles tun und hat die Küchenspüle mit.

Für Linux, haben Sie eine Vielzahl von Skriptsprachen und Muscheln, Ihnen zu helfen, wie die bisherigen Antworten.

find . -regex ".*html$" | while read line;
 do 
    A=`basename ${line} | sed 's/html$/htm/g'`;
    B=`dirname ${line}`;
    mv ${line} "${B}/${A}";
 done

In Python

import os

target_dir = "."

for path, dirs, files in os.walk(target_dir):
    for file in files:
        filename, ext = os.path.splitext(file)
        new_file = filename + ".htm"

        if ext == '.html':
            old_filepath = os.path.join(path, file)
            new_filepath = os.path.join(path, new_file)
            os.rename(old_filepath, new_filepath)

In Bash, könnten Sie Folgendes tun:

for x in $(find . -name \*.html); do
  mv $x $(echo "$x" | sed 's/\.html$/.htm/')
done

Ich bin sicher, dass es eine elegantere Möglichkeit, aber hier ist das erste, was in meinem Kopf auftauchte:

for f in $(find . -type f -name '*.html'); do 
    mv $f $(echo "$f" | sed 's/html$/htm/')
done

Wenn Sie forfiles haben (es kommt mit Windows XP und 2003 und neueren Sachen glaube ich) Sie können laufen:

forfiles / S / M * .htm / C "cmd / c ren @file * .html"

Unter Linux können Sie das ‚ umbenennen‘ Befehl zum Umbenennen von Dateien in Charge.

In bash use command rename :)

 rename 's/\.htm$/.html/' *.htm

 # or

 find . -name '*.txt' -print0 | xargs -0 rename 's/.txt$/.xml/'

 #Obs1: Above I use regex \. --> literal '.'  and  $ --> end of line
 #Obs2: Use find -maxdepht 'value' for determine how recursive is
 #Obs3: Use -print0 to avoid 'names spaces asdfa' crash!

Total Commander denen ist ein Dateimanager-App, können Sie List & Alles auswählen Dateien in seinem Verzeichnis & Sub-dirs, dann können Sie eine der total commander Operationen auf ihnen laufen. einer von ihnen. Multi-umbenennen die ausgewählten Dateien

AWK auf Linux. Extrapolieren Für das erste Verzeichnis ist dies Ihre Antwort ... von rekursiven Aufruf awk auf dir_path vielleicht durch einen anderen awk zu schreiben, die genau dieses awk unten schreibt ... und so weiter.

ls dir_path/. | awk -F"." '{print "mv file_name/"$0" dir_path/"$1".new_extension"}' |csh

Für Windows habe ich eine bequem litte VBScript Lösung mit regex-basierten Umbenennung und Drag & Drop Unterstützung. Probieren Sie es aus, wenn Sie möchten -. Steckte es in eine vbs Datei und legen Sie Ihre Ordner auf sie im Explorer

Unter Windows Das Umbenennen tut ein ziemlich gute Arbeit dazu. Freeware, aber nicht Open Source.

Unter Windows können Sie Open-Source einfache C # erfahren Sie Bulk File Renamer Anwendung in https : //filerenamer.codeplex.com arbeitet mit einer einfachen Excel-Datei . Geben Sie eine Excel-Datei mit zwei Spalten Quelle und Ziel auf diese Anwendung und es gemacht wird.

Unter Unix können Sie verwenden, rnm :

rnm -rs '/\.html$/.htm/' -fo -dp -1 *

oder

rnm -ns '/n/.htm' -ss '\.html$' -fo -dp -1 *

Erklärung:

  1. -ns: name string (neuer Name). /n/ ist ein Name String-Regel, die ohne die Erweiterung an den Dateinamen erweitert.
  2. -ss: Suchbegriff (regex). Sucht nach Dateien mit Spiel.
  3. -rs: ersetzen String der Form /search_regex/replace_part/modifier
  4. -fo: Datei nur Modus
  5. -dp: Tiefe des Verzeichnisses (-1 bedeutet unbegrenzt)
  6. .
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top