ejecutando archivo por lotes dentro de powershell

1

Estoy ejecutando un archivo por lotes dentro de PowerShell. Llama a otro programa para hacer un montón de mapas que envía a una subcarpeta llamada "GRD"

Luego quiero cambiar el nombre de los archivos en la carpeta GRD agregando espacios "" donde hay guiones bajos "_", así que estoy usando el comando PoweShell:

DIR | Rename-Item -NewName {$ .name -replace " ", ""}

Esta línea funciona bien si la escribo en la ventana de comandos de PS después de ejecutar mi archivo por lotes. Pero, ¿hay alguna manera de que pueda incorporar esta línea al final de mi archivo por lotes? He intentado:

cd GRD

DIR | Rename-Item -NewName {$ .name -replace " ", ""}

Pero me sale el error:

C: \ Datos \ GRD> DIR | Rename-Item -NewName {$ .name -replace " ", ""}

'Rename-Item' no se reconoce como un comando interno o externo, un programa operable o un archivo por lotes.

Soles
fuente
¿Por qué estás tratando de hacer un archivo por lotes y no un script de PowerShell? (ps1)
Zoredache
@Zoredache: originalmente un archivo por lotes era suficiente para mi tarea de generar mapas. Dado que los nombres de los archivos de salida no son exactamente correctos, leí que usar PowerShell podría cambiar el nombre. Por favor, tenga en cuenta que no soy un experto y solo estoy aprendiendo mi camino.
Sols

Respuestas:

1

Además del hecho de que su ejemplo no funciona correctamente, en general, para usar PowerShell desde un archivo por lotes, debe especificar que desea ejecutar PowerShell y alimentar la línea de comandos de PS como argumento.

Entonces, en su lote, use algo como:

powershell "DIR | Rename-Item -NewName { $.name -replace \"\",\" \" }"

Tenga \en cuenta el frente de las comillas dobles para escapar de ellas dentro del argumento que delimita las comillas dobles.

Ƭᴇcʜιᴇ007
fuente
no parece funcionar Recibo el error: 'powershell' no se reconoce como un comando interno o externo, un programa operable o un archivo por lotes.
Sols