Lors de l'exécution de certains fichiers (principalement de lot) en utilisant psexec, je reçois ces symboles weird ╗┐ 'avant ma commande. Ma pensée initiale était que j'utilisais un encodage incorrect, mais après avoir vérifié, j'ai réalisé que tous mes fichiers utilisaient UTF-8.
Je reçois ces symboles bizarres avant ma commande [...] Tous mes fichiers utilisaient UTF-8.
Cela a deux causes:
cmd.exe ne prend pas en charge UTF-8. Il utilise toujours l'un des codages monte-octets souvent appelés "OEM" - CP437, CP775, etc., en fonction des paramètres régionaux du système.
(Je m'attendais également à soutenir l'UTF-16, mais apparemment pas; pas même si j'ai ajouté le nom de l'UTF-16.)
Votre éditeur de texte ajoute un point d'octet de l'octet UTF-8 (octets EF
_ BB
_ BF
) au début de tous les fichiers UTF-8.
Quand -cmd.exe Lit votre script, il ne sait pas quoi faire avec la marque - il voit la naissance comme trois caractères CP437 ordinaires, ’
╗
┐
et tente de les utiliser dans le nom de la commande.
Configurez votre éditeur pour arrêter d'ajouter les fichiers codés BOM aux fichiers UTF-8. (Cela n'a aucun sens dans UTF-16 et est très inutile dans UTF-8.)
Compilerait les fichiers par lots dans une exe résolvant le problème?
euh
quelle
Pour davantage @ dsolimano répond , si vous êtes spécifiquement Utilisation Visual Studio, et dans mon cas c'est 201 Je l'ai résolu en procédant comme suit:
Maintenant, lorsque vous ouvrez un . BAT Fichier de l'intérieur Visual Studio, vous obtiendrez initialement:
Vous voudrez vous échapper à travers les options jusqu'à ce que vous arriviez à la [~ # ~] DOS [~ # ~ # ~] Option de votre langue:
Cliquez sur [~ # ~] OK [~ # ~ ~] Pour terminer l'ouverture du fichier.
OK, même s'il devrait être assez évident à ce stade, si vous pouvez voir le ∩╗┐
caractères au début de votre fichier, il vous incomberait à vous supprimer et à enregistrer le fichier, maintenant avec le codage correct. C'est ce qui vous empêche d'être invité à nouveau la prochaine fois.
Avec tout cela en place, vous serez heureux de savoir que vous pouvez maintenant voir, modifier et sauvegarder votre . BAT fichier (s) de dans Visual Studio de sorte que cmd.exe ne vous donne plus l'erreur odieuse susmentionnée de:
'' n'est pas reconnu comme une commande interne ou externe, un programme actionnant ou un fichier de commandes.
Ce sont unicode marques d'ordre d'octets . Cmd.exe ne les comprend pas. Si vous redoublez vos fichiers dans le Bloc-notes avec encodage ANSI, cela devrait résoudre le problème.
Par exemple, j'ai créé ce fichier de commandes:
echo Hello World
D'abord, je l'enregistre avec le codage UTF-8
C:\Users\DSolimano\Desktop\junk>test.bat
C:\Users\DSolimano\Desktop\junk>echo Hello World
'echo' is not recognized as an internal or external command,
operable program or batch file.
Puis avec unicode
C:\Users\DSolimano\Desktop\junk>test.bat
C:\Users\DSolimano\Desktop\junk>■e
'■e' is not recognized as an internal or external command,
operable program or batch file.
Et enfin avec ansi
C:\Users\DSolimano\Desktop\junk>test.bat
C:\Users\DSolimano\Desktop\junk>echo Hello World
Hello World
Comme expliqué précédemment, ce caractère est le nom de caractère Unicode (Mark d'octet) utilisé comme signature et que cmd.exe ne reconnaît pas.
Vous pouvez le supprimer en toute sécurité de nombreuses manières.
J'ai trouvé très facile à faire comme suit: