Convertir un fichier à partir de Windows à UNIX via Powershell ou le Lot
J'ai un script batch qui demande à un utilisateur pour une entrée, puis génère un couple de fichiers que j'utilise dans un AIX environnement. Ces fichiers doivent être au format UNIX (qui je crois est en UTF8), mais je suis à la recherche de quelques conseils sur la façon la plus SIMPLE de le faire.
Je n'aime pas avoir à télécharger de logiciel supplémentaire paquets; Cygwin ou GnuWin32. Je n'ai pas l'esprit de codage, si elle est possible, mon codage options sont Batch, VBS, Powershell et. Personne ne sait d'une façon de le faire?
Sinon pourrais-je créer les fichiers par Lots et d'appeler un script Powershell pour la réforme de ces?
L'idée ici est un utilisateur sera invité à fournir certaines informations, alors j'ai sortie un fichier standard, qui sont essentiellement des réponses rapides à AIX pour un emploi. Je suis en utilisant des Lots d'abord, parce que je ne savais pas que j'allais rencontrer ce genre de problème, mais je suis une sorte de penchant vers refaire ce en Powershell. parce que j'avais trouvé un code sur un autre forum, que peut faire la conversion (ci-dessous).
% foreach($i in ls -name DIR/*.txt) { \
get-content DIR/$i | \
out-file -encoding utf8 -filepath DIR2/$i \
}
La recherche d'une orientation ou des commentaires sur ce.
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire cela sans outils externes dans des fichiers batch.
Si vous n'avez besoin que l'encodage du fichier, puis l'extrait de code que vous avez donné devrait fonctionner. Si vous voulez convertir les fichiers en ligne (au lieu de les écrire à un autre endroit), vous pouvez faire
(les parenthèses autour de
Get-Content
sont importants) Cependant, cela va écrire les fichiers en UTF-8 avec une signature au début (U+FEFF) qui certains outils Unix de ne pas accepter (même s'il est techniquement légal, bien que déconseillé de les utiliser).Puis il y a le problème que les sauts de ligne sont différents entre Windows et Unix. Unix utilise uniquement U+000A (LF), tandis que Windows utilise deux personnages pour que: U+000D U+000A (CR+LF). Donc, idéalement, vous auriez convertir les sauts de ligne, aussi. Mais cela devient un peu plus complexe:
$contenst
dans la seconde à la dernière ligne et il a remplacé tous mes fichiers avec une chaîne vide!Set-StrictMode
.Essayer la version surchargée ReadAllText(String, Encodage) si vous utilisez des caractères ANSI et pas seulement ASCII ceux.
https://msdn.microsoft.com/en-us/library/system.io.file.readalltext(v=vs. 110).aspx
https://msdn.microsoft.com/en-us/library/system.text.encoding(v=vs. 110).aspx
ASCII - Obtient un encodage pour l'ASCII (7 bits) jeu de caractères.
Par défaut - permet d'obtenir un encodage pour le système d'exploitation actuel de la page de codes ANSI.