Powershell Foreach-Object boucle Foreach lire une chaîne à partir de plusieurs fichiers et écrire à l'un
J'ai de la difficulté à utiliser plusieurs commandes dans un Foreach ou Foreach-Object boucle
Ma situation est -
- J'ai beaucoup de fichiers texte, à environ 100.
Ils sont donc lireGet-ChildItem $FilePath -Include *.txt
- Chaque structure du fichier est le même, seule la touche de l'information est différente.
ExempleUtilisateur: Somerandomname
Ordinateur: Somerandomcomputer
Avec -Replace
commande j'ai supprimer l'Utilisateur":" et "Ordinateur:" donc, $User = Somerandomname
et $computer = "Somerandomcomputer
.
Dans chaque cercle, $user et $Ordinateur avec -Ajouter doivent être écrites dans un fichier. Et puis ensuite, le fichier doit être lu.
foreach-object { $file = $_.fullname;
doit être utilisé, mais je ne peux pas trouver la bonne syntaxe. Quelqu'un pourrait-il m'aider?
Êtes-vous à l'aide d'une boucle foreach, ou la cmdlet foreach-object? Je vois, il faut travailler dans la suivante: Get-ChildItem $FilePath -Comprendre *.txt | ForEach-Object {traiter les fichiers ici?}
Sont
Peut-être que c'est juste moi, mais voulez-vous lire sur ces 100 fichiers? Ou voulez-vous écrire? Et si vous voulez lui écrire, où les données que vous souhaitez écrire en provenance et en ce que la structure a-t-elle? Que voulez-vous ajouter d'où?
L'utilisateur et l'Ordinateur sont différentes lignes
Wiechers de la lecture de Données à partir de 100 fichiers et écrit à un avec des données extraites.
Sont
User: ...
et Computer: ....
sur la même ligne, ou les lignes suivantes? ne vous demandez-vous une solution qui lit les 2 lignes à la fois?Peut-être que c'est juste moi, mais voulez-vous lire sur ces 100 fichiers? Ou voulez-vous écrire? Et si vous voulez lui écrire, où les données que vous souhaitez écrire en provenance et en ce que la structure a-t-elle? Que voulez-vous ajouter d'où?
L'utilisateur et l'Ordinateur sont différentes lignes
Wiechers de la lecture de Données à partir de 100 fichiers et écrit à un avec des données extraites.
OriginalL'auteur Phoneutria | 2013-08-13
Vous devez vous connecter pour publier un commentaire.
En supposant que vous avez défini $Nom_fichier, $utilisateur, et/ou ordinateur $ailleurs, essayer quelque chose comme cela.
Vous pouvez utiliser
;
pour délimiter des commandes supplémentaires dans l'intérieur de laForeach-Object
, par exemple, si vous voulais avoir des commandes séparées pour l'utilisateur et le nom de l'ordinateur. Si vous ne placez pas la cmdlet Get-Content avec la parenthèse, vous obtiendrez une erreur parce que le processus aura toujours $ouverture fichier Set-Content tente de l'utiliser.Notez également qu'avec Powershell, les chaînes entre guillemets doubles permettra d'évaluer les variables, de sorte que vous pouvez mettre $utilisateur dans la chaîne de faire quelque chose comme
"User: $user"
si vous le souhaité.Sonne comme vous pouvez le faire à l'aide d'une simple manipulation de la chaîne, puis de la tuyauterie de Sortie de Fichier par @Ansgar de réponse. Vous souhaitez effectuer une itération sur un valeur dans votre boucle externe, et ajouter de la valeur à l'actuelle chaîne de valeur.
OriginalL'auteur Anthony Neace
Essayez ceci:
OriginalL'auteur Ansgar Wiechers
Si
User
etComputer
sont sur des lignes distinctes, vous devez lire les lignes deux à la fois. LeReadCount
paramètre deGet-Content
vous permet de le faire.Ce fait l'hypothèse que chaque fichier contient uniquement les lignes de la forme exacte
Si ce n'est pas le cas, vous aurez besoin de fournir tout ce qui est le format exact du fichier.
OriginalL'auteur latkin