如何从PowerShell编写.CMD文件?

时间:2011-03-13 03:41:08

标签: powershell cmd

如何从PowerShell写入有效的.CMD(或.BAT)文件?我正在使用>运算符,但cmd.exe无法执行我创建的文件。

下面是我正在尝试做的一个例子。 [为了比较,我还写了CMD.EXE的.CMD文件并证明它工作正常]

在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.EXE内容时没有问题。]

以编程方式从PowerShell写入.CMD文件的正确方法是什么,以便可以call使用{{1}}调用它?

1 个答案:

答案 0 :(得分:18)

Set-Content bar.cmd '@set BAR=1' -Encoding ASCII

PowerShell默认为UTF-16 LE。

短版。

sc bar.cmd '@set BAR=1' -en ASCII