Batchdatei-Skript zum Entfernen von Sonderzeichen aus Dateinamen (Windows)

8

Ich habe eine große Menge von Dateien, von denen einige Sonderzeichen im Dateinamen enthalten (z. B. ä, ö,% und andere). Ich möchte, dass eine Skriptdatei über diese Dateien iteriert und sie umbenannt, indem sie die Sonderzeichen entfernt. Es macht mir nichts aus, was es tut, aber es könnte sie beispielsweise durch Unterstriche ersetzen.

Störung% 20.doc würde in St_rung_20.doc

umbenannt werden

In der Reihenfolge der Präferenz:

  1. Eine Windiws-Batchdatei
  2. Eine Windows-Skriptdatei, die mit cscript (vbs)
  3. ausgeführt wird
  4. Eine Software von Drittanbietern, die über die Befehlszeile ausgeführt werden kann (d. h. keine Benutzerinteraktion erforderlich)
  5. Eine andere Sprachskriptdatei, für die ich eine zusätzliche Skript-Engine installieren müsste

Hintergrund: Ich versuche, diese Datei mit GnuPG unter Windows zu verschlüsseln, aber es scheint nicht mit Sonderzeichen in Dateinamen mit der Option --encrypt-files umzugehen.

    
njr101 04.11.2008, 10:54
quelle

5 Antworten

3

Danke an Tomalak, der mich tatsächlich in die richtige Richtung geleitet hat. Ich dachte, ich würde hier für Vollständigkeit posten.

Das Problem scheint zu sein, dass die von GPG verwendete Codepage unabhängig von der in der Konsole konfigurierten Codepage fest ist (Latin I). Aber sobald er darauf hingewiesen hat, habe ich herausgefunden, wie man das funktioniert.

Der Trick besteht darin, die Codepage vor dem Erzeugen der Dateiliste zu ändern. Dadurch wird die Dateiliste in der Konsole möglicherweise als falsch angezeigt. Wenn es jedoch an GPG übergeben wird, funktioniert es gut. GPG akzeptiert die Dateien und spuckt die verschlüsselten Dateien mit korrekten Dateinamen aus.

Die Stapeldatei sieht ungefähr so ​​aus:

%Vor%     
njr101 06.11.2008, 14:14
quelle
4

Haben Sie versucht, cmd.exe in eine andere Codepage zu setzen, bevor Sie die Dateinamen an gnupg übergeben? Geben Sie chcp 65001 ein, um cmd.exe vorher auf Unicode zu setzen, und versuchen Sie es erneut.

Wenn das fehlschlägt, würde das folgende VBScript es tun:

%Vor%

nenne es so:

%Vor%

Sie können auch einen Ordner per Drag & Drop in den Windows Explorer ziehen.

    
Tomalak 04.11.2008 11:13
quelle
3

Von Ссылка :

Verwenden Sie die Zeichenfolgeersetzung von NT SET, um Zeichen irgendwo in einer Zeichenfolge zu ersetzen oder zu entfernen:

%Vor%

Wenn Sie diesen Versuch verwenden, müssen Sie jedes Zeichen, das Sie ersetzen möchten (z. B. Ä, Ö, Ü, ä, ö, ü, ß, aber auch á, à, é, è ...) separat verarbeiten .

    
Treb 04.11.2008 11:14
quelle
1

Ich benutze diesen Stapel, um Ordner umzubenennen und scheint bis jetzt gut zu funktionieren ... In meinem Fall ist die Codepage 1252, deins könnte anders sein.

%Vor%     
Manolo 18.03.2010 13:10
quelle
1

Nach dem 'RenameFilesWithAccentedAndDiacriticalLatinChars.pl' PERL-Skript benennt Dateien mit akzentuierten und diakritischen lateinischen Zeichen um:

  • Dieses PERL-Skript beginnt mit dem im Parameter angegebenen Ordner oder andernfalls mit der aktuelle Ordner.
  • Es sucht rekursiv nach Dateien mit Zeichen, die zu 80 - FF gehören CP 1250, CP 1252, CP 1254 und CP 1257 (meist akzentuierte lateinische Zeichen) oder lateinische Zeichen mit diakritischen Zeichen.
  • Er berechnet neue Dateinamen durch Entfernen der Akzente und diakritischen Zeichen nur aus lateinischen Zeichen (zB Été - & gt; Ete).
  • Es zeigt alle vorgeschlagenen Umbenennungen und möglicherweise Konflikte an und fragt den Benutzer für die globale Genehmigung.
  • Wenn der Benutzer eine Genehmigung erteilt hat, werden alle Dateien ohne Konflikte umbenannt.

Option '--batch' vermeidet interaktive Fragen. Verwenden Sie vorsichtig.

Option '-' verhindert, dass der nächste Parameter als Option interpretiert wird.

Spezielle Warnung :

  • Dieses Skript wurde ursprünglich in UTF-8 kodiert und sollte es auch bleiben.
  • Dieses Skript kann viele Dateien umbenennen.
  • Dateinamen sind theoretisch nur mit UTF-8 codiert. Aber eine Datei Namen können auch einige Zeichen enthalten, die eine ältere Kodierung haben.
  • Der Autor hat sich um Konsistenzprüfungen, Robustheit und Konflikte bemüht Erkennung und Verwendung geeigneter Kodierung. Dieses Skript sollte also nur Dateien umbenennen, indem Akzente und diakritisch entfernt werden Zeichen aus lateinischen Zeichen.
  • Aber dieses Skript wurde nur unter einer begrenzten Anzahl von Betriebssystemen getestet (Windows, Mac OS X, Linux) und eine begrenzte Anzahl von Terminal-Kodierungen (CP 850, ISO-8859-1, UTF-8).
  • Also, unter seltsamen Umständen könnte dieses Skript viele Dateien mit umbenennen zufällige Namen.
  • Daher sollte dieses Skript mit Vorsicht verwendet und extrem modifiziert werden Vorsicht (Vorsicht Codierung der internen Strings, Eingaben, Ausgaben und Befehle)
%Vor%     
Etienne URBAH 11.03.2010 21:38
quelle