Windows PowerShell에서 표준 입력/출력 리다이렉트
Windows PowerShell에서 표준 입력/출력을 수정하는 데 필요한 구문은 무엇입니까?
UNIX에서는 다음을 사용합니다.
$./program <input.txt >output.txt
PowerShell에서 동일한 작업을 실행하는 방법은 무엇입니까?
파일을 stdin에 직접 연결할 수는 없지만 stdin에 액세스할 수는 있습니다.
Get-Content input.txt | ./program > output.txt
대용량 파일에 대한 'Get-Content' 대안을 찾는 사용자가 있다면 PowerShell에서 CMD를 사용할 수 있습니다.
cmd.exe /c ".\program < .\input.txt"
또는 다음 PowerShell 명령을 사용할 수 있습니다.
Start-Process .\program.exe -RedirectStandardInput .\input.txt -NoNewWindow -Wait
같은 창에서 프로그램을 동기화합니다.그러나 PowerShell 스크립트에서 실행할 때 이 명령어의 결과를 변수에 쓰는 방법을 찾을 수 없었습니다. 왜냐하면 이 명령어는 항상 콘솔에 데이터를 쓰기 때문입니다.
편집:
시작-프로세스에서 출력을 얻으려면 옵션을 사용할 수 있습니다.
- 리다이렉트 표준 리다이렉트
출력을 파일로 리디렉션한 다음 파일에서 읽습니다.
Start-Process ".\program.exe" -RedirectStandardInput ".\input.txt" -RedirectStandardOutput ".\temp.txt" -NoNewWindow -Wait
$Result = Get-Content ".\temp.txt"
출력 리다이렉트에는 다음을 사용할 수 있습니다.
command > filename Redirect command output to a file (overwrite)
command >> filename APPEND into a file
command 2> filename Redirect Errors
입력 리다이렉션은 다른 방법으로 동작합니다.예를 들어 이 Cmdlet http://technet.microsoft.com/en-us/library/ee176843.aspx을 참조하십시오.
또는 다음 작업을 수행할 수 있습니다.
예를 들어 다음과 같습니다.
$proc = Start-Process "my.exe" "exe commandline arguments" -PassThru -wait -NoNewWindow -RedirectStandardError "path to error file" -redirectstandardinput "path to a file from where input comes"
프로세스의 에러가 발생했는지 아닌지를 확인하려면 , 다음의 코드를 추가합니다.
$exitCode = $120.get_ExitCode()
if ($exitCode){
$errItem = Get-Item "path to error file"
if ($errItem.length -gt 0){
$errors = Get-Content "path to error file" | Out-String
}
}
이렇게 하면 외부 프로그램/프로세스를 처리해야 할 때 스크립트 실행을 더 잘 처리할 수 있습니다.그렇지 않으면 스크립트가 외부 프로세스 오류에 노출될 수 있습니다.
또, 표준 에러와 표준 out이 같은 장소에 보내지도록 할 수도 있습니다(cmd에서는 2>&1이 마지막에 와야 합니다).
get-child item foo 2 >&1 > log
「>」는 「| out-file」과 같으며, 디폴트로는 unicode 또는 utf 16 입니다.또, 같은 텍스트 파일에 asciii 와 Unicode 를 혼재시킬 수 있기 때문에, 「>」에 주의해 주세요."| add-content" 가 ">" 보다 더 잘 동작할 수 있습니다."| set-content"가 ">"보다 더 좋을 수 있습니다.
6개의 스트림이 있어요.상세정보 : https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_redirection?view=powershell-5.1
당신이 할 수 있는 일은 텍스트 파일에 저장한 후 변수에 읽는 것뿐이라고 생각합니다.
언급URL : https://stackoverflow.com/questions/11447598/redirecting-standard-input-output-in-windows-powershell
'sourcecode' 카테고리의 다른 글
목표 C에서 상수를 생성하는 가장 좋은 방법은 무엇입니까? (0) | 2023.04.09 |
---|---|
리스트 이해 python의 루프를 위해 2를 프레임하는 방법 (0) | 2023.04.09 |
Bash를 사용하여 파일에 문자열이 있는지 테스트하려면 어떻게 해야 합니다. (0) | 2023.04.09 |
목록을 피클 파일에 덤프하고 나중에 다시 검색 (0) | 2023.04.09 |
첫 페이지에서만 iPhone 탐색 모음 숨기기 (0) | 2023.04.09 |