2009-07-31 8 views
1

Comment puis-je obtenir Powershell pour produire un fichier IDENTICAL au fichier produit par la commande suivante? .Powershell 2.0 cauchemar de formatage hors fichier

dir/s/b/a-d * *> C: \ files.txt

devrait être facile, non !!

EDIT: J'ai trouvé que ps tronquait la sortie en fonction de la largeur du tampon d'écran. Corrigez cela avec la table de format et les pads avec des espaces ... essayez format-list et vous obtenez des titres de propriété ... vous avez l'idée.

Répondre

1

Il existe plusieurs façons d'écrire des informations dans un fichier. L'un est Set-Content, qui n'a pas le problème de largeur. En outre, la conversion d'un objet FileInfo en une chaîne entraîne le nom complet.

dir * -r | ?{!$_.PSIsCcontainer} | Set-Content C:\files.txt 

La raison pour laquelle vous avez un problème avec Out-File est que tous les applets de commande Out- * utilisent les vues de mise en forme automatique. Ces vues sont créées en pensant à la console.

2

Faut-il être exact? Pourquoi? Comme le dit le dicton, si vous êtes en train d'analyser des chaînes dans Powershell, vous faites probablement quelque chose de mal ... de toute façon ...

1) Il suffit d'appeler cmd.exe.

PS> cmd /c "dir /s /b /a-d *.* > c:\files.txt" 

2) Je crois que vous pouvez obtenir les mêmes résultats de Powershell natif. Mais je ne peux pas être responsable de tester tous les cas de bord avec des jonctions NTFS, les fichiers cachés, etc.

PS> gci -r | ?{ !$_.psiscontainer } | %{ $_.fullname } | out-file c:\files.txt 

Personnellement, je déteste le fait que vous ne pouvez pas utiliser « sélectionner » pour récupérer la propriété FullName sans effets secondaires étranges sur les cmdlets en aval. Si l'inutilité de la boucle foreach vous dérange autant que moi, utilisez Get-PropertyValue de PSCX ou Linq-Select de Josh Einstein.

+0

Oui, il devait être exact car il était entré dans un autre outil. out-file tronque à l'écran largeur de tampon –

+0

Intéressant. La redirection native a-t-elle le même problème? –