프로세스 별 환경 변수 (PATH)가 설정된 명령 프롬프트 시작
개요
자주 사용하는 툴군의 패스가 왠지 통과하지 않지만,
· 시스템의 환경 변수 (PATH)를 괴롭히고 싶지 않습니다.
· 명령 프롬프트마다 적절하게 전환하고 싶습니다.
라고 하는 것이 있었으므로, 프로세스 고유의 환경 변수(PATH)를 설정한 프롬프트를 시작하도록(듯이) 합니다.
이것을 ruby의 setrbvars.bat를 소재에 vbscript와 rb로 써 보겠습니다.
코드 - vbscript
포인트가 되는 코드를 vbscript로 나타냅니다. rb에서도 win32ole을 사용하기 때문에 대체로 동일합니다. 응용예 2 참조
cmd_after_addpath.vbs'利用するオブジェクトを生成しておく
set shell = CreateObject("WScript.Shell")
set fso = CreateObject("Scripting.FileSystemObject") 'path_to_addに設定するもの次第ではfsoはなくてもOK
'このスクリプトがあるフォルダをパスに追加する
path_to_add = fso.getParentFolderName(WScript.ScriptFullName)
' たちあげたプロンプトにだけ一時的に追加したいのでEnvironment("Process")にしておく。
set env = shell.Environment("Process")
env.Item("PATH") = path_to_add & ";" & env.item("PATH")
' cmd.exeを実行する
shell.Run "cmd.exe /K", ,FALSE
cmd.exe 매개 변수에/K를 지정하는 것은
Cmd - DOS 명령 목록 - Programming Field
/K <command>
<command>
로 지정한 내용을 실행합니다. 실행 후 "이 명령을 실행 한 cmd.exe"는 종료되지 않고 프롬프트가 계속 표시됩니다.
그렇다고 하는 것을 이용해, 커멘드 프롬프트에 나가 버리는 로고(↓)를 내놓지 않기 위해서입니다.
로고Microsoft Windows [Version xx.y.zzzzzzzz]
(c) 201y Microsoft Corporation. All rights reserved.
개조하면 나름대로의 로고를 내는 데 사용할 수 있습니다.
예를 들어, 다음과 같이 하면 추가한 패스를 로고 대신에 발행합니다.
개조' cmd.exeを実行する
shell.Run "cmd.exe /K echo " & path_to_add & " is temporary added to PATH", ,FALSE
응용예 1
setrbvars.vbs'利用するオブジェクトを生成しておく
set shell = CreateObject("WScript.Shell")
set fso = CreateObject("Scripting.FileSystemObject") 'path_to_addに設定するもの次第ではfsoはなくてもOK
'このスクリプトがあるフォルダをパスに追加する
'SET RUBY_BIN=%CD% 相当の処理
path_to_add = fso.getParentFolderName(WScript.ScriptFullName)
' たちあげたプロンプトにだけ一時的に追加したいのでEnvironment("Process")にしておく。
' SET PATH=%RUBY_BIN%;%PATH%相当の処理
set env = shell.Environment("Process")
env.Item("PATH") = path_to_add & ";" & env.item("PATH")
' cmd.exeを実行する
' ruby.exe -v相当の処理
shell.Run "cmd.exe /K ruby.exe -v", ,FALSE
setrbvars.vbs를 ruby.exe와 같은 폴더에서 두 번 클릭하면 명령 프롬프트가 시작됩니다.
setrbvars.bat는 C:\Windows\System32\cmd.exe /E:ON /K C:\Ruby22-x64\bin\setrbvars.bat
와 같이 cmd.exe에서 실행됩니다.
setrbvars.vbs는 WScript.exe 또는 CScript.exe에서 실행되며 cmd.exe를 하위 프로세스로 생성한다는 차이점이 있습니다.
응용예 2
setrbvars.rbrequire "win32ole"
shell = WIN32OLE.new("WScript.Shell")
env = shell.Environment("Process")
env.setproperty("item", "PATH", File.expand_path(File.dirname(__FILE__)).gsub("/", "\\\\") + ";" + env.item("PATH"))
shell.Run("cmd.exe /K ruby.exe -v",nil,false)
더블 클릭으로 rb를 실행할 수 있게 되면, 이것을 클릭하는 것만으로 「Ruby 명령 프롬프트 열기」와 같이 명령 프롬프트가 기동합니다.
사용법
추가 예정
cmd_after_addpath.vbs의 바로 가기를 명령 프롬프트의 현재 폴더로 만들 폴더를 만들고,
작업 폴더 필드를 비워 두거나 ... 아이콘을 변경하거나 ... Anaconda Prompt 시작에 대해 알아보기 - Qiita
비고
원래는 bat-->vbscript-->bat 같은 느낌으로 일시적인 환경 변수를 교환하려고 했습니다
"bat 프로세스 간 환경 변수 인계 공유"로 가면,
bat 파일에서 환경 변수 공유 정보
PATIO 2008/03/25(화) 10:34:14
확실히 실행 파일의 환경 변수는 기동한 환경의 환경 변수의 카피였다고 생각합니다.
그래서 실행 파일의 환경 변수를 변경해도 기동한 환경의 환경 변수는 바꿀 수 없을 것입니다.
결론적으로 환경 변수로 데이터를 반환할 수는 없다.
라는 것으로, Environment("System"), Environment("User"), Environment("Volatile")와 같이 「일시적이 아닌 것」을 사용하지 않으면 계승하지 않는 것 같았습니다.
하고 싶은 것은, 「들었던 프롬프트에만 임시로 추가하고 싶다」이므로, Environment("Process")와 동등한 스코프가 아니면 조금 형편이 나쁘다
반대로,
bat 파일에서 환경 변수 공유 정보
麩 2008/03/25(火) 16:58:44
EXE에서 호출자 Bat로 돌아가는 것은 포기하고, 계속의 처리를 EXE의 자식 프로세스로서 생성해 버리면 환경 변수의 인계는 할 수 없습니까?
그래서 자식 프로세스는 Environment("Process")를 인수하는 것 같아서 vbscript에서 cmd.exe를 시작하도록 했습니다.
쓰는 동안 "이 내용이라면 루비의 win32ole에도 할 수있을 것"이라고 깨달았기 때문에,
[ruby-list 31108] Re WIN32OLE 질문 환경 변수 설정은 어떻게 합니까? 을 참고로 했습니다.
참고
[ruby-list 31108] Re WIN32OLE 질문 환경 변수 설정은 어떻게 합니까?
Anaconda Prompt 시작에 대해 알아보기 - Qiita
bat 파일 내에서 환경 변수 공유에 대해 – 라라 엔지니어 라운지
Cmd - DOS 명령 목록 - Programming Field
모든 것은 시간에 ... [VBScript] 환경 변수 등록
MS Windows_VBScript - PukiWiki
@ IT : Windows TIPS - Tips : WSH에서 환경 변수 설정
Tech TIPS: setx에서 환경 변수의 값 설정(기본편) - @IT
일시적으로 환경 변수를 설정하고 프로그램을 시작하는 JScript PuppyLinux로 폭속 PC 라이프
일시적으로 환경 변수 XYZZYHOME을 설정한 다음 xyzzy를 시작합니다. - Cookie & Ice cream
Environment 속성
Reference
이 문제에 관하여(프로세스 별 환경 변수 (PATH)가 설정된 명령 프롬프트 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/int_main_void/items/e9f3fd0b80a1099dc7ff
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
포인트가 되는 코드를 vbscript로 나타냅니다. rb에서도 win32ole을 사용하기 때문에 대체로 동일합니다. 응용예 2 참조
cmd_after_addpath.vbs
'利用するオブジェクトを生成しておく
set shell = CreateObject("WScript.Shell")
set fso = CreateObject("Scripting.FileSystemObject") 'path_to_addに設定するもの次第ではfsoはなくてもOK
'このスクリプトがあるフォルダをパスに追加する
path_to_add = fso.getParentFolderName(WScript.ScriptFullName)
' たちあげたプロンプトにだけ一時的に追加したいのでEnvironment("Process")にしておく。
set env = shell.Environment("Process")
env.Item("PATH") = path_to_add & ";" & env.item("PATH")
' cmd.exeを実行する
shell.Run "cmd.exe /K", ,FALSE
cmd.exe 매개 변수에/K를 지정하는 것은
Cmd - DOS 명령 목록 - Programming Field
/K <command>
<command>
로 지정한 내용을 실행합니다. 실행 후 "이 명령을 실행 한 cmd.exe"는 종료되지 않고 프롬프트가 계속 표시됩니다.그렇다고 하는 것을 이용해, 커멘드 프롬프트에 나가 버리는 로고(↓)를 내놓지 않기 위해서입니다.
로고
Microsoft Windows [Version xx.y.zzzzzzzz]
(c) 201y Microsoft Corporation. All rights reserved.
개조하면 나름대로의 로고를 내는 데 사용할 수 있습니다.
예를 들어, 다음과 같이 하면 추가한 패스를 로고 대신에 발행합니다.
개조
' cmd.exeを実行する
shell.Run "cmd.exe /K echo " & path_to_add & " is temporary added to PATH", ,FALSE
응용예 1
setrbvars.vbs'利用するオブジェクトを生成しておく
set shell = CreateObject("WScript.Shell")
set fso = CreateObject("Scripting.FileSystemObject") 'path_to_addに設定するもの次第ではfsoはなくてもOK
'このスクリプトがあるフォルダをパスに追加する
'SET RUBY_BIN=%CD% 相当の処理
path_to_add = fso.getParentFolderName(WScript.ScriptFullName)
' たちあげたプロンプトにだけ一時的に追加したいのでEnvironment("Process")にしておく。
' SET PATH=%RUBY_BIN%;%PATH%相当の処理
set env = shell.Environment("Process")
env.Item("PATH") = path_to_add & ";" & env.item("PATH")
' cmd.exeを実行する
' ruby.exe -v相当の処理
shell.Run "cmd.exe /K ruby.exe -v", ,FALSE
setrbvars.vbs를 ruby.exe와 같은 폴더에서 두 번 클릭하면 명령 프롬프트가 시작됩니다.
setrbvars.bat는 C:\Windows\System32\cmd.exe /E:ON /K C:\Ruby22-x64\bin\setrbvars.bat
와 같이 cmd.exe에서 실행됩니다.
setrbvars.vbs는 WScript.exe 또는 CScript.exe에서 실행되며 cmd.exe를 하위 프로세스로 생성한다는 차이점이 있습니다.
응용예 2
setrbvars.rbrequire "win32ole"
shell = WIN32OLE.new("WScript.Shell")
env = shell.Environment("Process")
env.setproperty("item", "PATH", File.expand_path(File.dirname(__FILE__)).gsub("/", "\\\\") + ";" + env.item("PATH"))
shell.Run("cmd.exe /K ruby.exe -v",nil,false)
더블 클릭으로 rb를 실행할 수 있게 되면, 이것을 클릭하는 것만으로 「Ruby 명령 프롬프트 열기」와 같이 명령 프롬프트가 기동합니다.
사용법
추가 예정
cmd_after_addpath.vbs의 바로 가기를 명령 프롬프트의 현재 폴더로 만들 폴더를 만들고,
작업 폴더 필드를 비워 두거나 ... 아이콘을 변경하거나 ... Anaconda Prompt 시작에 대해 알아보기 - Qiita
비고
원래는 bat-->vbscript-->bat 같은 느낌으로 일시적인 환경 변수를 교환하려고 했습니다
"bat 프로세스 간 환경 변수 인계 공유"로 가면,
bat 파일에서 환경 변수 공유 정보
PATIO 2008/03/25(화) 10:34:14
확실히 실행 파일의 환경 변수는 기동한 환경의 환경 변수의 카피였다고 생각합니다.
그래서 실행 파일의 환경 변수를 변경해도 기동한 환경의 환경 변수는 바꿀 수 없을 것입니다.
결론적으로 환경 변수로 데이터를 반환할 수는 없다.
라는 것으로, Environment("System"), Environment("User"), Environment("Volatile")와 같이 「일시적이 아닌 것」을 사용하지 않으면 계승하지 않는 것 같았습니다.
하고 싶은 것은, 「들었던 프롬프트에만 임시로 추가하고 싶다」이므로, Environment("Process")와 동등한 스코프가 아니면 조금 형편이 나쁘다
반대로,
bat 파일에서 환경 변수 공유 정보
麩 2008/03/25(火) 16:58:44
EXE에서 호출자 Bat로 돌아가는 것은 포기하고, 계속의 처리를 EXE의 자식 프로세스로서 생성해 버리면 환경 변수의 인계는 할 수 없습니까?
그래서 자식 프로세스는 Environment("Process")를 인수하는 것 같아서 vbscript에서 cmd.exe를 시작하도록 했습니다.
쓰는 동안 "이 내용이라면 루비의 win32ole에도 할 수있을 것"이라고 깨달았기 때문에,
[ruby-list 31108] Re WIN32OLE 질문 환경 변수 설정은 어떻게 합니까? 을 참고로 했습니다.
참고
[ruby-list 31108] Re WIN32OLE 질문 환경 변수 설정은 어떻게 합니까?
Anaconda Prompt 시작에 대해 알아보기 - Qiita
bat 파일 내에서 환경 변수 공유에 대해 – 라라 엔지니어 라운지
Cmd - DOS 명령 목록 - Programming Field
모든 것은 시간에 ... [VBScript] 환경 변수 등록
MS Windows_VBScript - PukiWiki
@ IT : Windows TIPS - Tips : WSH에서 환경 변수 설정
Tech TIPS: setx에서 환경 변수의 값 설정(기본편) - @IT
일시적으로 환경 변수를 설정하고 프로그램을 시작하는 JScript PuppyLinux로 폭속 PC 라이프
일시적으로 환경 변수 XYZZYHOME을 설정한 다음 xyzzy를 시작합니다. - Cookie & Ice cream
Environment 속성
Reference
이 문제에 관하여(프로세스 별 환경 변수 (PATH)가 설정된 명령 프롬프트 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/int_main_void/items/e9f3fd0b80a1099dc7ff
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
'利用するオブジェクトを生成しておく
set shell = CreateObject("WScript.Shell")
set fso = CreateObject("Scripting.FileSystemObject") 'path_to_addに設定するもの次第ではfsoはなくてもOK
'このスクリプトがあるフォルダをパスに追加する
'SET RUBY_BIN=%CD% 相当の処理
path_to_add = fso.getParentFolderName(WScript.ScriptFullName)
' たちあげたプロンプトにだけ一時的に追加したいのでEnvironment("Process")にしておく。
' SET PATH=%RUBY_BIN%;%PATH%相当の処理
set env = shell.Environment("Process")
env.Item("PATH") = path_to_add & ";" & env.item("PATH")
' cmd.exeを実行する
' ruby.exe -v相当の処理
shell.Run "cmd.exe /K ruby.exe -v", ,FALSE
setrbvars.rb
require "win32ole"
shell = WIN32OLE.new("WScript.Shell")
env = shell.Environment("Process")
env.setproperty("item", "PATH", File.expand_path(File.dirname(__FILE__)).gsub("/", "\\\\") + ";" + env.item("PATH"))
shell.Run("cmd.exe /K ruby.exe -v",nil,false)
더블 클릭으로 rb를 실행할 수 있게 되면, 이것을 클릭하는 것만으로 「Ruby 명령 프롬프트 열기」와 같이 명령 프롬프트가 기동합니다.
사용법
추가 예정
cmd_after_addpath.vbs의 바로 가기를 명령 프롬프트의 현재 폴더로 만들 폴더를 만들고,
작업 폴더 필드를 비워 두거나 ... 아이콘을 변경하거나 ... Anaconda Prompt 시작에 대해 알아보기 - Qiita
비고
원래는 bat-->vbscript-->bat 같은 느낌으로 일시적인 환경 변수를 교환하려고 했습니다
"bat 프로세스 간 환경 변수 인계 공유"로 가면,
bat 파일에서 환경 변수 공유 정보
PATIO 2008/03/25(화) 10:34:14
확실히 실행 파일의 환경 변수는 기동한 환경의 환경 변수의 카피였다고 생각합니다.
그래서 실행 파일의 환경 변수를 변경해도 기동한 환경의 환경 변수는 바꿀 수 없을 것입니다.
결론적으로 환경 변수로 데이터를 반환할 수는 없다.
라는 것으로, Environment("System"), Environment("User"), Environment("Volatile")와 같이 「일시적이 아닌 것」을 사용하지 않으면 계승하지 않는 것 같았습니다.
하고 싶은 것은, 「들었던 프롬프트에만 임시로 추가하고 싶다」이므로, Environment("Process")와 동등한 스코프가 아니면 조금 형편이 나쁘다
반대로,
bat 파일에서 환경 변수 공유 정보
麩 2008/03/25(火) 16:58:44
EXE에서 호출자 Bat로 돌아가는 것은 포기하고, 계속의 처리를 EXE의 자식 프로세스로서 생성해 버리면 환경 변수의 인계는 할 수 없습니까?
그래서 자식 프로세스는 Environment("Process")를 인수하는 것 같아서 vbscript에서 cmd.exe를 시작하도록 했습니다.
쓰는 동안 "이 내용이라면 루비의 win32ole에도 할 수있을 것"이라고 깨달았기 때문에,
[ruby-list 31108] Re WIN32OLE 질문 환경 변수 설정은 어떻게 합니까? 을 참고로 했습니다.
참고
[ruby-list 31108] Re WIN32OLE 질문 환경 변수 설정은 어떻게 합니까?
Anaconda Prompt 시작에 대해 알아보기 - Qiita
bat 파일 내에서 환경 변수 공유에 대해 – 라라 엔지니어 라운지
Cmd - DOS 명령 목록 - Programming Field
모든 것은 시간에 ... [VBScript] 환경 변수 등록
MS Windows_VBScript - PukiWiki
@ IT : Windows TIPS - Tips : WSH에서 환경 변수 설정
Tech TIPS: setx에서 환경 변수의 값 설정(기본편) - @IT
일시적으로 환경 변수를 설정하고 프로그램을 시작하는 JScript PuppyLinux로 폭속 PC 라이프
일시적으로 환경 변수 XYZZYHOME을 설정한 다음 xyzzy를 시작합니다. - Cookie & Ice cream
Environment 속성
Reference
이 문제에 관하여(프로세스 별 환경 변수 (PATH)가 설정된 명령 프롬프트 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/int_main_void/items/e9f3fd0b80a1099dc7ff
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
원래는 bat-->vbscript-->bat 같은 느낌으로 일시적인 환경 변수를 교환하려고 했습니다
"bat 프로세스 간 환경 변수 인계 공유"로 가면,
bat 파일에서 환경 변수 공유 정보
PATIO 2008/03/25(화) 10:34:14
확실히 실행 파일의 환경 변수는 기동한 환경의 환경 변수의 카피였다고 생각합니다.
그래서 실행 파일의 환경 변수를 변경해도 기동한 환경의 환경 변수는 바꿀 수 없을 것입니다.
결론적으로 환경 변수로 데이터를 반환할 수는 없다.
라는 것으로, Environment("System"), Environment("User"), Environment("Volatile")와 같이 「일시적이 아닌 것」을 사용하지 않으면 계승하지 않는 것 같았습니다.
하고 싶은 것은, 「들었던 프롬프트에만 임시로 추가하고 싶다」이므로, Environment("Process")와 동등한 스코프가 아니면 조금 형편이 나쁘다
반대로,
bat 파일에서 환경 변수 공유 정보
麩 2008/03/25(火) 16:58:44
EXE에서 호출자 Bat로 돌아가는 것은 포기하고, 계속의 처리를 EXE의 자식 프로세스로서 생성해 버리면 환경 변수의 인계는 할 수 없습니까?
그래서 자식 프로세스는 Environment("Process")를 인수하는 것 같아서 vbscript에서 cmd.exe를 시작하도록 했습니다.
쓰는 동안 "이 내용이라면 루비의 win32ole에도 할 수있을 것"이라고 깨달았기 때문에,
[ruby-list 31108] Re WIN32OLE 질문 환경 변수 설정은 어떻게 합니까? 을 참고로 했습니다.
참고
[ruby-list 31108] Re WIN32OLE 질문 환경 변수 설정은 어떻게 합니까?
Anaconda Prompt 시작에 대해 알아보기 - Qiita
bat 파일 내에서 환경 변수 공유에 대해 – 라라 엔지니어 라운지
Cmd - DOS 명령 목록 - Programming Field
모든 것은 시간에 ... [VBScript] 환경 변수 등록
MS Windows_VBScript - PukiWiki
@ IT : Windows TIPS - Tips : WSH에서 환경 변수 설정
Tech TIPS: setx에서 환경 변수의 값 설정(기본편) - @IT
일시적으로 환경 변수를 설정하고 프로그램을 시작하는 JScript PuppyLinux로 폭속 PC 라이프
일시적으로 환경 변수 XYZZYHOME을 설정한 다음 xyzzy를 시작합니다. - Cookie & Ice cream
Environment 속성
Reference
이 문제에 관하여(프로세스 별 환경 변수 (PATH)가 설정된 명령 프롬프트 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/int_main_void/items/e9f3fd0b80a1099dc7ff
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(프로세스 별 환경 변수 (PATH)가 설정된 명령 프롬프트 시작), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/int_main_void/items/e9f3fd0b80a1099dc7ff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)