Windows lot: Unicode paramètres (robo) de commande de copie
J'ai besoin de copier plusieurs fichiers dans un seul fichier de commandes. Les fichiers ont des noms Unicode qui correspondent aux différentes pages de code.
Exemple:
set ArabicFile=ڊڌڵڲڛشس
set CyrillicFile=щЖЛдЉи
set GermanFile=Bücher
copy %ArabicFile% SomePlaceElse
copy %CyrillicFile% SomePlaceElse
copy %GermanFile% SomePlaceElse
Problème: par Lots les fichiers ne peuvent pas être Unicode.
Question: Comment écrire les noms de fichier Unicode pour le fichier de commandes de sorte que la commande copier les reconnaît?
Notes:
Je n'aime pas la façon dont les noms de fichier sont affichés.
En fait le fichier de commandes de fait beaucoup plus que simplement copier ces fichiers, j'ai juste simplifié la description pour rendre le problème plus clair.
Correcte fichier de commandes:
Avec Arnout de réponse, j'ai modifié mon fichier de commandes comme suit. Il fonctionne maintenant correctement sans nécessiter un changement de police (ce qui serait le désordre, comme Arnout commenté).
@echo off
chcp 65001
set ArabicFolder=ڊڌڵڲڛشس
set CyrillicFolder=щЖЛдЉи
set GermanFolder=Bücher
robocopy /e d:\temp\test\%ArabicFolder% d:\temp\test2\%ArabicFolder% /log:copy.log
robocopy /e d:\temp\test\%CyrillicFolder% d:\temp\test2\%CyrillicFolder% /log+:copy.log
robocopy /e d:\temp\test\%GermanFolder% d:\temp\test2\%GermanFolder% /log+:copy.log
OriginalL'auteur Helge Klein | 2010-11-16
Vous devez vous connecter pour publier un commentaire.
Si
CHCP 65001
comme la première ligne de votre fichier de commandes,il fonctionne. Simple, non? 🙂
(Le changement de police est en fait pas nécessaire, si vous n'êtes pas d'écriture non-ASCII sortie de la console.)
Euh, ouais, c'est ce que je voulais dire par "si vous n'êtes pas d'écriture non-ASCII sortie de la console"...
Cool, cela fonctionne 😉 Seulement gotcha: comment définir la police de caractères dans un fichier batch? Le fichier de commandes à exécuter sur plusieurs ordinateurs et je ne peut pas reconfigurer avant l'exécution de mon script. Et le changement de police est nécessaire - si je n'ai pas modifier la police, l'ensemble des commandes de l'échec.
Serait l'ajout d'un
ECHO OFF
faire l'affaire, ou avez-vous de pouvoir compter sur de voir (une partie de) la sortie dans la fenêtre de la console? Vous pourriez être en mesure de spécifier la police à l'importation d'un .REG avec certains paramètres sous HKCU\Console, mais c'est assez laid et probablement pas très robuste. (Vous pouvez le faire à partir d'un autre .CMD script, bien sûr.)Sur mon Win7 64bit machine
CHCP
a été sensible à la casse et j'ai dû écrire la commande en minuscules. Sinon, la commande n'a pas été reconnus.OriginalL'auteur Arnout
Je ne suis pas certain, mais je pense que le court (8.3) de nom de fichier sera ASCII, de sorte que vous peut se référer à elle de cette façon? Vous pouvez trouver le nom de fichier court avec
dir /X
.Nom de fichier court génération peut être désactivé, de sorte que vous ne doit en aucun cas compter sur eux.
OriginalL'auteur Vicky
Je veux créer un fichier batch (par exemple
RunThis.bat
) qui crée des répertoires de noms qui peuvent être des Russes ou autres.Exemple:
Lorsque DOS de Windows est ouverte à l'invite:
Ce travail de commande et le nom s'affichent correctement.
Mais si j'ai essayer en utilisant le bloc-notes et enregistrer dans
ANSII
, je ne peux pas.Donc, si j'utilise de nouveau le bloc-notes et enregistrer en UTF-8, cela fonctionne, mais avec des caractères illisibles.
RunThis.chauve-souris (le bloc-notes enregistrer en UTF-8), donner des caractères illisibles.
Le problème avec le bloc-notes il utilise UTF-8 avec NOMENCLATURE.
Pour enregistrer les .chauve-souris à l'aide de l'UTF-8 sans BOM nous devons utiliser l'éditeur de texte comme Notepad++.
RunThis.chauve-souris (Notepad++ enregistrer en UTF-8 sans BOM)
Cette fois, son travail parfaitement, quand nous courons “
RunThis.bat
” directement à partir deexplorer.exe
OriginalL'auteur Resistor