while until loop content childitem powershell

content - powershell loop until



Ejecutar un programa en un foreach (4)

Si todavía necesita comillas en la ruta del comando (por ejemplo, si tiene espacios), simplemente hágalo así:

ls | % { &"C:/Working/tools/custom-tool.exe" $_.FullName }

Observe el uso de & antes de la cadena para forzar a PowerShell a interpretarlo como un comando y no como una cadena.

Estoy intentando que funcione este sencillo script de Powershell, pero creo que algo está fundamentalmente mal ;-)

ls | foreach { "C:/Working/tools/custom-tool.exe" $_ }

Básicamente quiero obtener archivos en un directorio y pasarlos uno por uno como argumentos a la herramienta personalizada.


ls | %{C:/Working/tools/custom-tool.exe $_}

A medida que cada objeto desciende por la tubería, la herramienta se ejecutará en su contra. Poner comillas alrededor de la cadena de comando hace que sea ... ¡una picadura! La variable local "$ _" probablemente no sepa qué hacer, por lo que vomita con un error.


Tanto Jeffrery Hicks como slipsec son correctos. Deshazte de las comillas dobles.

$ _ o $ _. fullname funcionó en mi script de prueba (abajo). YMMV con su herramienta personalizada.

gci | % { c:/windows/notepad.exe $_.fullname }

o

gci | % { c:/windows/notepad.exe $_ }


Apuesto a que su herramienta necesita la ruta completa. $ _ Es cada objeto de archivo que viene a través de la canalización. Es probable que necesites usar una expresión como esta:

ls | %{C:/Working/tools/custom-tool.exe $_.fullname}