¿Cómo se escribe uno en un archivo .CMD (o .BAT) válido de PowerShell? Estoy usando el operador >
pero cmd.exe
no puedo ejecutar los archivos que creo.Cómo escribir archivos .CMD de PowerShell?
A continuación se muestra un ejemplo de lo que estoy tratando de hacer. [Para la comparación, también escribo en un archivo de .CMD CMD.EXE
y demostrar que funciona bien]
En PowerShell:
PS C:\> "@set BAR=1" > bar.cmd // write to a .CMD file from PowerShell
En cmd.exe:
C:\> echo @set FOO=1 > foo.cmd // write to a .CMD file from CMD.EXE
C:\> type foo.cmd // display .CMD file written from CMD.EXE
@set FOO=1 // PASS
C:\> type bar.cmd // display .CMD file written from PowerShell
@set BAR=1 // PASS
C:\> call foo.cmd // invoke .CMD file written from CMD.EXE
C:\> echo %FOO%
1 // PASS
C:\> call bar.cmd // invoke .CMD file written from PowerShell
C:\> ■@ // FAIL
'■@' is not recognized as an internal or external command,
operable program or batch file.
Sospecho que bar.cmd
se está creando con una codificación no compatible con call
en CMD.EXE
. [Aunque aviso de que type
tiene ningún problema para mostrar el contenido de bar.cmd
en su codificación actual.]
Cuál es la forma correcta de escribir en un archivo mediante programación .CMD de PowerShell tal que puede ser invocado desde CMD.EXE
con call
?
que hace el truco, gracias! – jwfearn
O puede usar Out-File, por ejemplo: ''@set BAR = 1' | Out-File bar.cmd -enc ascii' –
tengo que amar la pipa, gracias Keith! – jwfearn