Как писать в файл .CMD(или .BAT) из PowerShell? Я использую оператор >
, но cmd.exe
не может выполнить файлы, которые я создаю.
Ниже приведен пример того, что я пытаюсь сделать. [Для сравнения, я также пишу в .CMD файл из cmd.exe
и показываю, что он отлично работает]
В PowerShell:
PS C:\> "@set BAR=1" > bar.cmd // write to a .CMD file from PowerShell
В 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.
Я подозреваю, что bar.cmd
создается с кодировкой, не поддерживаемой call
в cmd.exe
. [Обратите внимание, что type
не вызывает проблем с отображением содержимого bar.cmd
в его текущей кодировке.]
Каков правильный способ программной записи в файл .CMD из PowerShell, так что он может быть вызван из cmd.exe
с помощью call
?