Comment puis-je écrire un null caractère ASCII (nul) à un fichier avec un Windows script batch?
Je suis d'essayer d'écrire un ASCII caractère nul (nul) à un fichier à partir d'un Windows script batch sans succès. J'ai d'abord essayé d'utiliser echo
comme ceci:
echo <Alt+2+5+6>
qui semble comme il devrait fonctionner (en tapant le <Alt+2+5+6>
dans la fenêtre de commande ne fait qu'écrire un caractère null ou ^@
comme il semble), mais echo
puis sorties:
More?
et se bloque jusqu'à ce que j'appuie sur <Return>
. Comme une alternative, j'ai essayé à l'aide de:
copy con tmp.txt >nul
<Alt+2+5+6><Ctrl+Z>
qui fait exactement ce dont j'ai besoin, mais seulement si je le taper manuellement dans la fenêtre de commande. Si je le lance à partir d'un fichier batch, il se bloque jusqu'à ce que j'appuie sur <Ctrl+Z>
, mais même alors, le fichier de sortie est créé, mais reste vide.
Je veux vraiment que le fichier de commandes de rester seul, sans exiger (par exemple) un fichier séparé contenant un caractère nul qui peuvent être copiés en cas de besoin.
Vous devez vous connecter pour publier un commentaire.
Bon d'accord, c'était difficile, et la solution est moche, mais ça fonctionne.
Vous pouvez utiliser le fichier de commandes lui-même que le fichier contenant le caractère null pour être copié.
Ce fichier de commandes, appelé
null.bat
:(où la dernière ligne contient seulement le caractère null) ajoute le caractère null pour
myfile.txt
.findstr /v /r
affiche toutes les lignes qui ne sont pas compensées par les regex, c'est à dire uniquement la dernière, car il n'y a aucun caractère de saut de ligne.J'ai essayé plusieurs autres choses, mais c'était la seule que j'ai pu trouver qui ne coupons pas le caractère null.
Remarque:
findstr
a d'abord été livré avec Windows 2000 peut ne pas être disponible sur les versions antérieures de WindowsVoici un article qui explique comment écrire arbitraire d'octets d'un fichier de commandes (recherche de
h2b.com
). Effectivement cela résout le problème de l'écriture non-imprimable des données à l'aide d'un script batch (y compris la valeur null).Je n'aime pas la solution ne peut pas être facile de copier/coller-d pour les fichiers texte.Si peu de plusieurs façons:
1) mshta (peut être utilisé directement dans un fichier batch ou en ligne de commande):
2) certutil (nécessite un fichier temp)
3) makecab il suffit de cocher la sous-routine ici - http://ss64.com/nt/syntax-genchr.html
Une alternative à la accepté de répondre à ce qui n'implique pas de devoir mettre des caractères nuls dans le fichier de commandes est comme suit:
C'est évidemment plus détaillé et a également l'inconvénient de ne pas travailler sur Win64 machines (en raison de
debug
n'est plus disponible dans ces milieux).