Batch-Datei zum Umbenennen von Leerzeichen mit einem Punkt, mit Ausnahme des Teils -, und Kleinbuchstaben

1

Ich versuche , aus einer Datei umbenennen , The Big Bang Theory - The Prom Equivalency.mp4um the.big.bang.theory-the.prom.equivalency.mp4mit einem Batch - Skript. Folgendes habe ich bisher:

@ECHO OFF
setlocal enabledelayedexpansion
FOR %%f IN (%*) DO (
    set filename=%%~nf
    set filename=!filename: =.!
    set filename=!filename: .-.=-!
    rem uncomment for debugging.
    rem if not "!filename!"=="%%~nf" ECHO RENAME "%%~dpnxf" "!filename!%%~xf" >> "%TEMP%\test.txt"
    rem comment for debugging.
    if not "!filename!"=="%%~nf" RENAME "%%~dpnxf" "!filename!%%~xf"
)

Die Datei, die ich bekomme, ist The.Big.Bang.Theory.-.The.Prom.Equivalency.mp4.

Was ist der Zaubertrick, um nicht zuzulassen, dass Punkte auf beiden Seiten des -Skripts platziert werden, und wie kann ich den Kleinbuchstabenbefehl in das Skript einarbeiten?

Ólafur Björnsson
quelle
Warum ist die Frage mit "Bash-Scripting" markiert? Suchen Sie ein Bash-Skript oder nicht?
AFH
Vielleicht irrelevant, aber ich würde gerne wissen, warum Sie dies tun möchten ... Lassen Sie jemanden am anderen Ende des vermutlichen Usenet / Torrent-Prozesses mit der Aufgabe zurück in Leerzeichen zu tauschen ... Leerzeichen überleben Usenet / Torrent in diesen Tagen
Tetsujin
Tetsujin: Weil ich FLV-Dateien direkt von der CBS-Site herunterlade und ein anderes Batch-Skript verwende, um den Container von FLV auf MP4 zu ändern. Ich habe einen gemeinsamen Medienserver für die ganze Familie, auf den dann 3 Apple TVs zugreifen. Durch Umbenennen der Dateien als solche ist es dann einfacher zu sortieren und zu finden. Jetzt habe ich das andere Skript mit diesem kombiniert und dank euch läuft alles reibungslos und automatisch :)
Ólafur Björnsson

Antworten:

1

Was ist der Zaubertrick, um nicht zuzulassen, dass Punkte auf beiden Seiten des Strichs platziert werden?

Kommen wir darauf zurück.

Wie entferne ich die Punkte auf beiden Seiten des Strichs?

Ändere dein

set filename=!filename: .-.=-!

Aussage zu

set filename=!filename:.-.=-!

weil, so wie Sie es jetzt haben, Sie suchen (Leerzeichen, Punkt, Strich, Punkt) und diese Sequenz nicht vorhanden ist.


OK jetzt,

Was ist der Zaubertrick, um nicht zuzulassen, dass Punkte auf beiden Seiten des Strichs platziert werden?

Kehren Sie einfach die Reihenfolge Ihrer :=Anweisungen um (und passen Sie den Bindestrich entsprechend an).

set filename=!filename: - =-!
set filename=!filename: =.!

Auf diese Weise, Sie beseitigen die Räume rund um den Strich , bevor Sie die Wortzwischenräume zu Punkten ändern.


"Wie kann ich den Kleinbuchstabenbefehl in das Skript einarbeiten?"

Nun, du könntest es tun

set filename=!filename:A=a!
set filename=!filename:B=b!
set filename=!filename:C=c!

Das ist nicht sehr elegant. Mir wurde jedoch darauf hingewiesen, dass dies genauso gut möglich ist

set filename=!filename:a=a!
set filename=!filename:b=b!
set filename=!filename:c=c!

weil das :... =... String-Matching in Groß- und Kleinschreibung Art und Weise durchgeführt wird (zum Beispiel :q=entwird „sqimQal“ in „sentimental“ ändern). Wenn wir also die Antwort von Magoo so anpassen, dass Dateiname von Großbuchstaben in Kleinbuchstaben konvertiert wird , können wir dies vereinfachen

for %%a in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do (
    set filename=!filename:%%a=%%a!
)
G-Man
quelle
1
Es gibt eine elegante Lösung: Siehe Magoos Antwort zum Konvertieren von Dateinamen von Klein- in Großbuchstaben . Einfach auch umgekehrt anzuwenden, einfach (A B C ...(a b c ...
umstellen