Fichier de commandes de script pour supprimer les caractères spéciaux dans les noms de fichiers (Windows)
J'ai un grand nombre de fichiers, dont certains contiennent des caractères spéciaux dans le nom de fichier (par exemple, ä,ö,%, et d'autres). Je voudrais un fichier de script pour effectuer une itération sur ces fichiers et de les renommer en supprimant les caractères spéciaux. Je n'ai pas vraiment l'esprit de ce qu'il fait, mais il pourrait les remplacer par des caractères de soulignement par exemple par exemple
Störung%20.doc sera renommé St_rung_20.doc
Dans l'ordre de préférence:
- Un Windiws fichier de commandes
- Un Windows fichier de script à exécuter avec cscript (vbs)
- Un tiers morceau de logiciel qui peut être exécuté depuis la ligne de commande (c'est à dire sans intervention de l'utilisateur requise)
- Une autre langue de fichier de script, pour lequel je dois installer un autre moteur de script
Contexte: je suis en train de chiffrer ces fichier avec GnuPG sur Windows, mais il ne semble pas gérer les caractères spéciaux dans les noms de fichiers avec l' --encrypt-option fichiers.
OriginalL'auteur njr101 | 2008-11-04
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé de réglage cmd.exe dans une autre page de codes avant de nourrir les noms de fichiers avec gnupg? Question
chcp 65001
à définir cmd.exe en Unicode à l'avance et essayez à nouveau.Si cela échoue, le VBScript suivant le ferait:
l'appeler comme ceci:
Vous pouvez également drag&drop un dossier sur elle dans l'Explorateur Windows.
OriginalL'auteur Tomalak
De http://www.robvanderwoude.com/bht.html:
utilisation NT de l'ENSEMBLE de la chaîne de substitution, de supprimer ou de remplacer des caractères dans une chaîne:
Si vous utilisez cette tentative, vous aurez à traiter chaque caractère que vous voulez remplacer (par exemple, Ä,Ö,Ü,ä,ö,ü,ß, mais aussi á,à,é,è...) séparément.
OriginalL'auteur Treb
Grâce à Tomalak qui en fait m'a orienté dans la bonne direction. Pensé que je poste ici par souci d'exhaustivité.
Le problème semble être que la page de codes utilisés par GPG est fixe (Latin I) est indépendant de la page de codes configuré dans la console. Mais une fois qu'il l'a signalé, j'ai compris comment workaraound.
L'astuce consiste à modifier la page de code avant de générer le fichier de la liste. De ce fait, la liste de fichiers semble être incorrect lors de l'affichage dans la console. Toutefois, lorsqu'il est passé à GPG, il fonctionne très bien. GPG accepte les fichiers et crache le encrytped fichiers avec les bons noms de fichiers.
Le fichier de commandes ressemble à quelque chose comme ceci:
OriginalL'auteur njr101
Je suis à l'aide de ce lot de renommer les dossiers et semble bien fonctionner jusqu'à présent...
Dans mon cas, la page de codes 1252 est, le vôtre peut être différent.
OriginalL'auteur Manolo
"RenameFilesWithAccentedAndDiacriticalLatinChars.pl' script PERL renomme les fichiers avec accentuées et les signes diacritiques caractères latins :
le dossier en cours.
CP 1250, CP 1252, CP 1254 et CP 1257 (surtout accentués en caractères latins)
ou caractères latins ayant des signes diacritiques.
seulement à partir de caractères latins (Par exemple, Été --> Ete).
pour approbation.
L'Option '--batch " évite les questions interactives. À utiliser avec précaution.
Option '--' évite le paramètre suivant à être interprété comme option.
Spécial D'Avertissement :
les noms peuvent être trouvés pour contenir aussi des personnages ayant hérité d'encodage.
la détection et l'utilisation de codage approprié.
Si ce script ne devrait renommer des fichiers en supprimant les accents et signes diacritiques
les marques de caractères latins.
(Windows, Mac OS X, Linux) et un nombre limité de terminaux encodages
(CP 850, ISO-8859-1, UTF-8).
des noms aléatoires.
de soins (attention à l'encodage des chaînes internes, les entrées, sorties et commandes)
Hi "medien-auditiv'. Mon script fait confiance à la valeur de votre "LANG" variable d'environnement. Votre message d'erreur un peu bizarre, parce que la ligne 390 de mon script imprime complètement comme de l'utf-8, et le 'ö' de 'öäß-dossiertest' s'affiche correctement l'utilisation de l'UTF-8, mais le 'ö' de 'möglich" est affiché à l'aide de l'ISO-8859-1 : *** ls: Zugriff auf öäß-dossiertest nicht möglich: Aucun fichier ou répertoire Pourriez-vous vérifier que la sortie de la "locale" de la commande est-elle cohérente ? De plus, mon fournisseur de messagerie est free.fr mon compte il y a eurbah, und ich je comprends ein wenig Deutsch. MFG.
Aujourd'hui, la version de mon script PERL a grandement amélioré la robustesse, et devrait désormais correctement : - prendre en compte les noms de fichiers avec l'héritage et les caractères UTF-8, les noms de fichiers contenant des citations et des noms de fichiers commençant par un tiret. - impression des messages d'erreur avec l'encodage adéquat. En outre, il convertit tous les caractères accentués du CP 1250 (europe Centrale), CP 1252 (europe Occidentale), CP 1254 (en turc) et de CP 1257 (Baltique). Merci de le tester.
Je reçois un "impossible de trouver le fichier" erreur: pastebin.com/sTQ1tPc1 (environnement: Windows 7 x64 avec ActivePerl x64 5.18.1.1800)
OriginalL'auteur Etienne URBAH