¿Cómo canalizar un grupo de archivos a través de un .exe usando powershell?


1

Actualmente estoy usando un archivo .exe llamado "vbadecompiler.exe" para procesar un grupo de archivos ".xlsm". Esos son muchos para procesar manualmente, por lo tanto, Powershell parece ser la respuesta. Mi intento actual es el siguiente:

dir *.xlsm | foreach-object {.\vbadecompiler.exe cmd/decompile /sXLfile:=$_ /sApplication:=Excel /sAppVersion:=Default /bOverBackup:=1 /bPreservDateTime:=0 /bLogActivity:=1 /sFilePassword:=""}

Pero solo se ejecuta a través del primer archivo, hay más de 100 archivos para procesar. No puedo encontrar cómo hacerlo pasar por todo. ¿Cómo deberia hacerse?

PD: Acabo de descubrir que hay una manera más simple de hacer esto usando VBA: https://stackoverflow.com/questions/17956651/execute-a-command-in-command-prompt-using-excel-vba


¿Necesita el período al final de /sXLfile:=$_.?
Rynant

En el cmdlet foereach-object, $ _. representa el objeto Por eso está ahí.
A. Perez Cera

1
Solo necesita el punto si está accediendo a un miembro del objeto (por ejemplo $_.FullName). Sin miembro, debería serlo $_. En este caso, si el archivo era 'foo.xlsm', /sXLfile:=$_.se interpretará como: /sXLfile:=foo.xlsm .(tenga en cuenta el espacio y el punto después del nombre del archivo)
Rynant

Eliminé el punto pero sigo teniendo el mismo problema; solo se ejecuta una vez. Supongo que debería crear varias instancias del .exe pero si no lo permite o no sé cómo.
A. Perez Cera

1
¿Has intentado esperar a que vuelva la ejecución? (start-process -wait iirc)
horatio
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.