2011-03-13 10 views
11

PowerShell에서 유효한 .CMD (또는 .BAT) 파일에 어떻게 쓰는지? > 연산자를 사용하고 있지만 cmd.exe은 내가 만든 파일을 실행할 수 없습니다.PowerShell에서 .CMD 파일을 작성하는 방법?

다음은 내가하려는 일의 예입니다. [비교를 위해, 나는 또한 CMD.EXE에서 .CMD 파일을 작성하고 그것을 잘 작동하는지 보여] PowerShell에서

을 :

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. 

내가 의심 : CMD.EXE에

PS C:\> "@set BAR=1" > bar.cmd // write to a .CMD file from PowerShell 

call으로 인코딩을 지원하지 않는 bar.cmd이 생성되고 CMD.EXE에 있습니다. [type은 현재 인코딩 bar.cmd의 내용을 표시 문제가 없습니다 비록 통지있다.]

프로그램이 callCMD.EXE에서 호출 할 수 있도록 PowerShell을에서 .CMD 파일에 쓸 수있는 적절한 방법은 무엇입니까?

답변

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

PowerShell은 기본적으로 UTF-16 LE입니다.

짧은 버전.

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

그 트릭을 수행합니다, 감사합니다! – jwfearn

+3

또는 Out-File 예 :'@set BAR = 1 '| Out-File bar.cmd -enc ascii' –

+0

덕분에 파이프가 좋아 져요, 키이스! – jwfearn

관련 문제