2017-08-31 3 views
2

depuis hier, j'essaie de créer un fichier batch qui écrit plusieurs informations sur l'ordinateur dans un fichier txt qui sera utilisé plus tard pour conserver les mises à jour de la base de données. Le seul problème est que parfois la sortie se termine par des symboles chinois aléatoires.La sortie par lots dans le fichier contient des symboles chinois

Voici un exemple de la version actuelle de la sortie des fichiers batch.

SerialNumber 
XXXXXX 
Manufacturer 
FUJITSU // American Megatrends Inc. 
Name 
Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz 

semble bon jusqu'à présent, mais dès que je veux ajouter un texte sur mon propre ou des plus gros morceaux de texte d'information ou normale entre dans le fichier texte, il l'écrit dans ces symboles maudits. Voici la sortie avec "CPU" écrite entre les informations du fabricant et de la CPU.

SerialNumber 
XXXXXX 
Manufacturer 
FUJITSU // American Megatrends Inc. 
偃⁕਍Name 
Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz 

Le seul problème est que je l'ai déjà essayé de résoudre ce problème avec chcp 65001 et il sera toujours ne pas fonctionner correctement. :/

Eh bien voici le code que j'utilise pour écrire les informations dans un fichier txt.

@SET PathSave=C:\Test.txt 
@ECHO. 
@ECHO Collecting Informations 
@ECHO. 
@ECHO Seriennummer 
@wmic bios get serialnumber >> %PathSave% 
@ECHO Marke 
@wmic bios get manufacturer >> %PathSave% 
@ECHO CPU 
@wmic cpu get name >> %PathSave% 
@ECHO Netzwerkadapter 
@wmic nicconfig >> %PathSave% 
@ECHO Press any key to complete! 
@PAUSE > NUL 

Peut-être que quelqu'un connaît déjà cette cause depuis que je l'ai vu d'autres qui tentent de résoudre le problème, mais tout ce que j'ai essayé jusqu'à présent n'a pas fonctionné.

+0

sorties 'WMIC' à UTF-16, cela ne devrait pas être un problème si vous lisez la sortie avec quelque chose qui lit ce type de codage en mode natif. – Compo

+0

J'utilise le bloc-notes pour ouvrir le fichier .txt et bien. –

+0

C'est votre problème, le bloc-notes n'est pas conçu pour les fichiers de ce type. – Compo

Répondre

0

Il existe une solution assez simple pour les moments où vous avez l'intention de lire l'UTF-16 LE (BOM) dans un lecteur non compatible avec ce format.

Passez le résultat à More, par ex.

@WMIC CPU Get Name|MORE>>"%PathSave%" 

... et:

@ECHO OFF 
SET "PathSave=C:\Test.txt" 
ECHO(
ECHO Collecting BIOS, CPU and Network Information 
ECHO(

( WMIC BIOS Get Manufacturer,SerialNumber 
    WMIC CPU Get Name 
    WMIC NICConfig)|MORE>"%PathSave%" 

ECHO Press any key to complete ... 
PAUSE>NUL 
+0

Cela m'aidera à finir l'outil. En passant, savez-vous un moyen de faire quelque chose comme ça. Var1 = Wmic Computername Var2 = C: \ .txt Je veux juste enregistrer les noms de fichiers par les ordinateurs que j'ai vérifiés, si c'était possible. –

+0

Chaque nom d'ordinateur se trouve déjà dans une variable d'environnement, '% COMPUTERNAME%', vous pouvez donc l'incorporer dans votre nom ou chemin d'accès au fichier de sortie. – Compo

+0

Merci beaucoup encore. J'ai rétréci mon lot maintenant par 1 à 200 caractères qui devraient être beaucoup mieux. Merci également pour le 'bios wmic get , ' qui a également coupé certaines commandes inutiles etc Maintenant, le seul problème est que je ne sais pas comment enregistrer le fichier dans l'un de nos dossiers réseau, mais je pense c'est juste un petit truc avec _ \\ fileserver \> dossier avec droits publics> _ Dois-je peut-être donner le dossier comme tout le monde et lire et écrire les droits d'un dossier afin que je puisse l'enregistrer à cet endroit particulier –