2009-10-14 18 views
1

J'ai un exécutable binaire qui prend une liste de chemins de fichiers comme arguments, par exemple,Passer le contenu du répertoire en une seule ligne à un exécutable Powershell

C: \ Tool.exe C: \ Files \ Fichier1 .txt C: \ Files \ File2.txt

Je voudrais appeler cet outil de Powershell. La question est, comment puis-je obtenir la sortie de get-childitem tout sur une ligne?

Si je cours:

ls C:. \ Files \ * txt | sélectionnez FullName

Je reçois un chemin par ligne. Comment puis-je concaténer les résultats?

Répondre

3

Dans PowerShell 2.0 vous pouvez utiliser l'opérateur -join:

(ls C:\Files\*.txt | %{ $_.FullName }) -join ' ' 

Dans PowerShell 1.0 vous pouvez définir $OFS, qui est utilisé pour combiner une séquence d'éléments quand ils sont utilisés en tant que chaîne:

$ofs = ' ' 
"$(ls C:\Files\*.txt | %{ $_.FullName })" 
+0

+1. Même si j'utilise '-join' ou' [string] :: join' qui est probablement moins sujet aux effets secondaires. avec '$ OFS', j'ai tendance à l'ignorer lors de la lecture du code. – Joey

+0

Fonctionne comme un charme. –

+0

@Johannes - D'accord, essayant juste de donner quelques options. – dahlbyk