Question

Comment tuer une erreur standard dans un fichier dans un fichier DOS Batch? Piping en utilisant >> Seule la sortie standard et l'erreur standard va toujours à la console.

Détails de mon problème:

J'exécute Winrar via la ligne de commande, dans une sauvegarde quotidienne automatisée. Et l'exemple suivant tue la sortie de Winrar, mais pas la sortie d'erreur qui est ce que je veux le plus, pour winraroutput.txt:

RAR.exe a -esh -r "E:\backup.rar" "D:\*.*" >> winraroutput.txt

Le problème est parfois que les fichiers sont utilisés et quand ils le sont, je veux savoir qu'ils ont été manqués dans les archives et l'enregistrer dans un .txt fichier à côté de chacun .rar Fichier au cas où nous aurons jamais à y retourner. Les fichiers manquants sont facilement remplacés par la réinstallation des programmes, il n'est donc pas grave de les remplacer, tant que nous savons qu'ils manquent. Ce ne sont donc que des informations qui seraient formidables à savoir, pas nécessaires, en cas de besoin.

Comment puis-je sortir uniquement la sortie d'erreur standard à la .txt le fichier et, si possible mais pas nécessaire, laissez la sortie régulière à la console?

Points bonus:

Points bonus si vous pouvez me dire comment supprimer le fichier s'il est vide (pas d'erreurs)! Demandé ici: Comment détecter (et supprimer) un fichier s'il est vide à l'aide d'un fichier de lots Windows?.

Était-ce utile?

La solution

Essaye ça:

   command.exe 2>file.txt

Ou si vous préférez ne pas voir d'erreurs, envoyez-la à Nul:

   command.exe 2>nul

Cela devrait laisser Std :: cout sur la console.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top