J'ai essayé d'obtenir robocopy dans Windows 7 pour générer un journal Unicode, car j'ai des fichiers avec des caractères Unicode. La commande que j'ai utilisée:
robocopy C:\mysource D:\mydest /mir /unilog:backup.log /tee
Fichier la copie fonctionne et la sortie à l'écran est correcte, le fichier journal lui-même contient juste du charabia. Cela indépendamment du fait que j'utilise l'invite de commande ou le PowerShell.
Ce qui donne? Est-ce que je fais quelque chose de mal?
Réponses:
Bug dans XP27. Essayez de revenir à XP26.
Il semble s'agir d'un bogue dans la
XP27
version de RoboCopy (fournie avec Windows 7).Dans la version
XP26
(qui vient avec Windows Vista)/UNILOG
produit un fichier journal Unicode parfaitement lisible pour moi.Si vous n'avez pas de copie de Vista, EasyRoboCopy est également livré avec la
XP26
version. (Je n'ai pas réellement essayé EasyRoboCopy lui-même, juste extraitrobocopy.exe
de son fichier d'installation à l'aide deWinRAR
.)la source
En un coup d'œil, je dirais que le fichier écrit par Robocopy lors de l'utilisation des commutateurs
/UNILOG
et/TEE
contient un repère d'ordre d'octets UTF-16 petit-boutien suivi d'un script typographique de terminal ISO-8859-1.Pour le rendre lisible, j'ai fait ce qui suit dans Ubuntu:
Le fichier résultant correspond à ce que j'ai vu dans l'invite de commande Windows.
Pour en savoir plus: homme
dd
, hommeiconv
, hommecol
la source
([System.Text.Encoding]::Unicode).GetString([System.Text.Encoding]::Convert([System.Text.Encoding]::GetEncoding(28591), [System.Text.Encoding]::Unicode, ([System.Text.Encoding]::GetEncoding(28591)).GetBytes($_)))
En regardant la sortie du fichier (binaire) sur Win7, l'option / UNILOG est inutile. Il écrit la nomenclature UNICODE standard (FFFE), mais procède ensuite à l'écriture de tous les caractères étroits SAUF pour la ligne d'options (par exemple, / BYTES / S / COPY: DATS ...), qui est unicode réel. Après cela, il revient aux caractères ANSI, et ce n'est pas non plus UTF-8; c'est-à-dire, si vous avez un nom de fichier avec un caractère large dans le chemin, il est converti en un "?" étroit personnage.
Apparemment, aucun intérêt à le réparer à partir de MSFT, car il en est ainsi depuis un certain temps, et j'ai toutes les mises à jour.
la source
J'ai corrigé mes fichiers journaux Robocopy illisibles au format Unicode dans Windows (qui ont été créés accidentellement en ajoutant la sortie Robocopy normale à la sortie Unicode de Out-File dans PowerShell), comme suit:
Dans PowerShell:
Le code ci-dessus peut ne pas fonctionner pour toutes les tailles de fichier!
(Crédit pour le code: j'ai adapté le code de cet article de Ferdinand Prantl: Stackoverflow - Lire / analyser des fichiers binaires avec PowerShell
la source
Utilisez la page de codes UTF-8, puis exécutez le convertisseur de mots clés
Si vos noms de fichier ou de répertoire contiennent des caractères Unicode, puis avant d'exécuter la commande Robocopy avec le
/unilog
paramètre, utilisez lachcp 65001
commande. (La page de codes 65001 est UTF-8 .)Une fois que vous avez le journal Unicode tronqué, ouvrez-le simplement dans MS Word sous
Unicode (UTF-8)
et enregistrez-le:la source
Dans votre cas, la commande dans Powershell ressemble à ceci:
La solution de contournement est que vous utilisez Out-File au lieu du paramètre intégré / unilog. Vous obtiendrez exactement le même fichier journal, mais maintenant il sera correctement écrit en unicode.
la source
Exécutez la
chcp
commande avant la commande robocopy, avec la bonne page de codes.pour UTF-8 (ne fonctionne pas avec robocopy et l'hébreu et peut-être plus de langues):
pour l'hébreu:
Liste complète des pages de codes: https://docs.microsoft.com/en-us/windows/desktop/intl/code-page-identifiers
la source