Windows 배치 파일의 명령 결과로 변수 값 설정
Bash 환경 에서 작업 할 때 명령의 결과로 변수 값을 설정하려면 일반적으로 다음을 수행합니다.
var=$(command -args)
여기서는 var
명령에 의해 설정된 변수입니다 command -args
. 그런 다음 해당 변수에 $var
.
거의 모든 Unix 쉘과 호환되는보다 일반적인 방법은 다음과 같습니다.
set var=`command -args`
즉, Windows 배치 파일 에서 명령의 결과로 변수 값을 어떻게 설정할 수 있습니까? 난 노력 했어:
set var=command -args
그러나 명령의 출력이 아닌 var
로 설정되어 command -args
있습니다.
Jesse가 설명하는 작업을 수행하려면 Windows 배치 파일에서 다음을 작성해야합니다.
for /f "delims=" %%a in ('ver') do @set foobar=%%a
그러나 Unix 유형 스크립팅에 익숙하다면 Windows 시스템에서 Cygwin 을 사용하는 것이 좋습니다 .
Windows 배치 명령은 다음과 같이 약간주의해야합니다.
for /f "delims=" %%a in ('command') do @set theValue=%%a
Unix 쉘 명령문과 동일한 의미가 없습니다.
theValue=`command`
명령이 실패하여 오류가 발생한 경우를 고려하십시오.
Unix 셸 버전에서 "theValue"에 대한 할당은 계속 발생하며 이전 값은 빈 값으로 대체됩니다.
Windows 배치 버전에서 오류를 처리하는 것은 "for"명령이며 "do"절에 도달하지 않으므로 "theValue"의 이전 값이 유지됩니다.
Windows 배치 스크립트에서 더 많은 Unix와 유사한 의미 체계를 얻으려면 할당이 발생하는지 확인해야합니다.
set theValue=
for /f "delims=" %%a in ('command') do @set theValue=%%a
Unix 스크립트를 Windows 배치로 변환 할 때 변수 값을 지우지 못하면 미묘한 오류가 발생할 수 있습니다.
배치 파일에 데이터베이스 쿼리 결과가 필요할 때 수행하는 방법은 다음과 같습니다.
sqlplus -S schema/schema@db @query.sql> __query.tmp
set /p result=<__query.tmp
del __query.tmp
키는 2 행에 있습니다. "set / p"는 "<"리디렉션 연산자를 통해 "__query.tmp"의 첫 번째 행 (전용) 값으로 "result"값을 설정합니다.
내가 본 유일한 방법은 다음과 같은 경우입니다.
for /f "delims=" %a in ('ver') do @set foobar=%a
ver
Windows 및 내 시스템에 대한 버전 명령입니다.
Microsoft Windows [Version 6.0.6001]
'IT박스' 카테고리의 다른 글
vscode에서 ES6 / ES7 구문 지원을 켜는 방법이 있습니까? (0) | 2020.08.24 |
---|---|
ASP.NET에서 SASS 사용 (0) | 2020.08.24 |
Select2 또는 Chosen에 대한 적절하게 테스트 된 대안이 있습니까? (0) | 2020.08.24 |
Y 축에서 텍스트와 제목 사이의 거리 늘리기 (0) | 2020.08.23 |
배치 파일; (0) | 2020.08.23 |