Comment puis-je supprimer les retours à partir de fichier texte à l'aide de Powershell?
J'obtiens le contenu d'un répertoire dans un fichier txt à l'aide de la commande suivante:
$SearchPath="c:\searchpath"
$Outpath="c:\outpath"
Get-ChildItem "$SearchPath" -Recurse | where {!$_.psiscontainer} | Format-Wide -Column 1'
| Out-File "$OutPath\Contents.txt" -Encoding ASCII -Width 200
J'arrive à la fin quand je veux faire c'est un fichier txt avec les informations dont j'ai besoin, mais il ajoute de nombreux retours chariot je n'ai pas besoin, la sortie est plus difficile à lire.
C'est à quoi il ressemble:
c:\searchpath\directory
name of file.txt
name of another file.txt
c:\searchpath\another directory
name of some file.txt
Qui rend un fichier txt qui nécessite beaucoup de défilement, mais l'information elle-même n'est pas beaucoup, en général beaucoup moins d'une centaine de lignes.
Je voudrais qu'il ressemble:
c:\searchpath\directory
nameoffile.txt
c:\searchpath\another directory
another file.txt
C'est ce que j'ai essayé jusqu'à présent, pas de travail
$configFiles=get-childitem "c:\outpath\*.txt" -rec
foreach ($file in $configFiles)
{
(Get-Content $file.PSPath) |
Foreach-Object {$_ -replace "'n", ""} |
Set-Content $file.PSPath
}
J'ai aussi essayé " r mais les deux options de laisser le fichier inchangé.
Une autre tentative:
Select-String -Pattern "\w" -Path 'c:\outpath\contents.txt' | foreach {$_.line}'
| Set-Content -Path c:\outpath\contents2.txt
Quand je lance la chaîne sans le contenu à la fin, il correspond exactement à ce que j'en ai besoin dans la société internationale d'ethnobiologie, mais dès que j'ajoute le Contenu à la fin, une fois contre les retours chariot où je n'ai pas besoin d'eux.
Voici quelque chose d'intéressant, si je crée un fichier texte avec quelques retours chariot et quelques onglets, puis si j'utilise le même remplacer le script que j'ai utilisé, mais l'utilisationt to replace the tabs, it works perfect. But
r et n do not work. It's almost as though it doesn't recognize them as escape characters. But if I add
r et n dans le fichier txt puis d'exécuter le script, ça ne fonctionne toujours pas, remplacer quoi que ce soit. Ne semble pas savoir quoi faire avec elle.
OriginalL'auteur user1417978 | 2012-05-25
Vous devez vous connecter pour publier un commentaire.
Set-Content
ajoute des sauts de ligne par défaut. Remplacement deSet-Content
parOut-File
dans votre dernière tentative dans votre question vous donnera le fichier que vous voulez:OriginalL'auteur jon Z
Ce n'est pas 'r (apostrophe), c'est un retour tique: `r. C'est la clé au-dessus de la touche tab du clavier états-unis. 🙂
OriginalL'auteur x0n
Vous pouvez simplement éviter toutes ces lignes vides en utilisant
Select-Object -ExpandProperty Name
:... si vous n'avez pas besoin des noms de dossier.
J'ai été déconner avec un problème similaire, l'autre jour. N'est-il pas un nom de chemin complet de la propriété? Bonne chance à tous.
Il ressemble OP besoin de fichiers groupés par dossier. J'ai essayé d'accomplir par
Select-Object DirectoryName, Name
et-GroupBy DirectoryName
mais cela donne le même résultat, comme la commande d'origine.Correct, j'ai besoin d'eux regroupés par dossier.
OriginalL'auteur Filburt