Windows에서 Rscript.exe 찾기

1
Karsten W. 2020-06-18 01:09.

Windows 컴퓨터에서 Rscript를 실행하고 싶습니다. 이를 위해서는 Rscript가 %PATH%에 없기 때문에 정확한 위치를 찾아야 합니다. stackoverflow를 검색하다가 이 방법을 찾았습니다.

where /r "c:\Program Files" Rscript.exe

세 줄을 생성합니다.

c:\Program Files\R\R-3.6.2\bin\Rscript.exe
c:\Program Files\R\R-3.6.2\bin\i386\Rscript.exe
c:\Program Files\R\R-3.6.2\bin\x64\Rscript.exe

이제 진행 방법을 모르겠습니다. Windows cmd의 (로컬) 환경 변수에 세 줄 중 하나를 어떻게 할당할 수 있습니까? 이상적으로는 첫 번째 또는 세 번째 줄, 즉 x64 rscript.exe입니다.

SO에서 찾은 또 다른 접근 방식은 다음과 같습니다.

set "src=c:\Program Files"
set "search=Rscript.exe"

for /r "%src%" %%F in (*%search%*) do (
  set "full=%%~fF"
  set "name=%%~nxF"
  echo %full%
)

하지만 %full%에는 아무 것도 할당되지 않습니다.

두 대 이상의 컴퓨터에서 배치 파일을 실행하고 싶기 때문에 이러한 컴퓨터에서 추가 구성(PATH 또는 R_HOME 설정 또는 Rscript를 .R 파일에 할당 또는...)을 수행하는 것을 피하고 싶습니다.

3 answers

2
Compo 2020-06-18 06:04.

내가 제공하는 첫 번째 조언은 파일과 파일 연결에서 해당 위치가 레지스트리에 추가되었는지 확인하는 것 .RData입니다. 발견되면 본질적으로 다음으로 바꿀 수 RGui.exe있습니다 RScript.exe.

@Echo Off
SetLocal EnableExtensions
Set "Key=HKCU\Software\Classes\RWorkspace\Shell\Open\Command"
Set "RDir="
For /F "EOL=H Tokens=2*" %%G In ('%__AppDir__%reg.exe Query "%Key%" /VE 2^>NUL'
) Do Set "RDir=%~dpH"
If Not Defined RDir For /F "EOL=H Tokens=2*" %%G In (
    '%__AppDir__%reg.exe Query "HKLM%Key:~4%" /VE 2^>NUL') Do Set "RDir=%~dpH"
If Defined RDir Where /Q "%RDir%.":"RScript.exe" && (
    Set "RDir=%RDir%RScript.exe") || Set "RDir="
If Defined RDir Echo Your default RScript.exe absolute path is %RDir% & Pause

다른 대안은 설치 위치에 대한 레지스트리 제거 정보를 확인하고 발견된 경우 \bin하위 디렉토리와 해당 아키텍처 하위를 추가하는 것입니다.

@Echo Off
SetLocal EnableExtensions
Set "Key=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
Set "Sub=R for Windows"
Set "Val=InstallLocation"
Set "Reg=%__AppDir__%reg.exe"
Set "Find=%__AppDir__%find.exe"
Set "RDir="
For /F "EOL=H Tokens=2*" %%G In (
    '"%Reg% Query "%Key%" /S /F "%Sub%" /K /V "%Val%" 2>NUL|%Find% "\""'
) Do Set "RDir=%%H"
If Not Defined RDir If Defined PROCESSOR_ARCHITEW6432 (
    For /F "EOL=H Tokens=2*" %%G In (
        '"%Reg% Query "%Key%" /S /F "%Sub%" /K /V "%Val%" /Reg:32 2>NUL|%Find% "\""'
    ) Do Set "RDir=%%H")
If Not Defined RDir GoTo :EOF
If "%PROCESSOR_ARCHITECTURE:~-2%" == "86" (
    If Not Defined PROCESSOR_ARCHITEW6432 (Set "RDir=%RDir%\bin\i386"
) Else Set "RDir=%RDir%\bin\x64") Else Set "RDir=%RDir%\bin\x64"
Where /Q "%RDir%":"RScript.exe" && (Set "RDir=%RDir%\RScript.exe") || Set "RDir="
If Defined RDir Echo Your default RScript.exe absolute path is %RDir% & Pause

설치 시 에서 설치 옵션 Save version number in registry이 선택 되었는지 (또는 나중에 또는 를 사용하여 ) 확인한 다음 반환된 홈 디렉토리 경로를 사용하여 하위 디렉토리를 추가 하는지 확인하는 것도 좋습니다 .Select Additional TasksRSetReg.exeRSetReg.exe /Personal

@Echo Off
SetLocal EnableExtensions DisableDelayedExpansion
Set "Reg=%__AppDir__%reg.exe"
Set "Find=%__AppDir__%find.exe"
Set "Key=HKCU\Software\R-core\R"
Set "Val=InstallPath"
Set "RDir="
For /F "EOL=H Tokens=2*" %%G In (
    '"%Reg% Query "%Key%" /S /F "%Val%" /V 2>NUL|%Find% "\""') Do Set "RDir=%%~H"
If Not Defined RDir For /F "EOL=H Tokens=2*" %%G In (
    '"%Reg% Query "HKLM%Key:~4%" /S /F "%Val%" /V 2>NUL|%Find% "\""'
) Do Set "RDir=%%~H"
If Not Defined RDir GoTo :EOF
If "%PROCESSOR_ARCHITECTURE:~-2%" == "86" (
    If Not Defined PROCESSOR_ARCHITEW6432 (Set "RDir=%RDir%\bin\i386"
) Else Set "RDir=%RDir%\bin\x64") Else Set "RDir=%RDir%\bin\x64"
Where /Q "%RDir%":"RScript.exe" && (Set "RDir=%RDir%\RScript.exe") || Set "RDir="
If Defined RDir Echo Your default RScript.exe absolute path is %RDir% & Pause

이러한 방법 중 하나가 위치를 제공하지 못하는 경우에만 시스템 드라이브 또는 실행 파일에 대해 사용 가능한 다른 볼륨을 검색하는 것이 좋습니다.

2
T3RR0R 2020-06-18 01:40.

for /F 루프를 사용하여 명령 출력을 변수로 캡처할 수 있습니다. if conditions 또는 출력을 find 또는 findstr로 파이프하면 해당 출력을 추가로 필터링할 수 있습니다.

출력의 첫 번째 줄만 캡처하는 간단한 경우에는 다음으로 충분합니다.

@echo off
Setlocal ENABLEdelayedexpansion
For /F "Delims=" %%0 In ('where /r "c:\Program Files" Rscript.exe') do If "!scriptpath!" == "" Set "scriptpath=%%~0"
1
Karsten W. 2020-06-18 01:55.

참고로 제가 생각해낸 해결책은 다음과 같습니다.

@echo off

set "rscript=I:\path\to\myscript.R"

for /r "c:\Program Files" %%F in (*Rscript.exe*) do (
  "%%~fF" "%rscript%" %*
  goto :eof
)

echo No Rscript.exe found. Maybe you need to install R.
pause

편집: @Compo의 제안을 사용하여 배치 파일을 다음과 같이 수정했습니다.

@Echo Off
SetLocal EnableExtensions

set "rscript=I:\path\to\myscript.R"

For /F "EOL=H Tokens=3*" %%G In (
    '"reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /S /F "R for Windows" /K /V "InstallLocation" 2> NUL | find "InstallLocation""'
) Do Set "rexe=%%G %%Hbin\x64\Rscript.exe"

if not defined rexe goto nope

"%rexe%" "%rscript%" %*
goto :eof

:nope
echo No Rscript.exe found. Maybe you need to install R.
pause

여기에 내가 그 과정에서 배운 몇 가지 메모가 있습니다.

  • .RData내 PC의 RStudio와 연결되어 있으므로 여기를 보는 것은 좋지 않습니다.
  • SetLocal EnableExtension내 PC에는 필요하지 않지만 다른 PC에는 있을 수 있으므로 라인을 유지했습니다.
  • 는 세 번째 토큰으로 Tokens=3*정의 %G하고 암시적 %H으로 세 번째 토큰 이후의 모든 토큰으로 정의합니다. 미친 구문.
  • 2> NUL"오류 메시지 무시"를 의미합니다.
  • 이중 따옴표 "'reg ...'"가 정말 필요한데 왜 그런지 궁금합니다.

이것은 지금 나를 위해 작동합니다. 배치 파일이 실행될 PC가 x64 아키텍처이고 Program Files. 나중에 rscript에 옵션을 추가해야 할 수도 있습니다. 또한 R이 2개 이상 설치되어 있을 경우를 대비하여 최신 R 버전을 사용할 수 있도록 알아내야 할 것입니다.

Related questions

MORE COOL STUFF

Jana Duggar: 사랑에 대해 그녀가 말한 모든 것과 '하나'를 찾기 위한 5년의 창

Jana Duggar: 사랑에 대해 그녀가 말한 모든 것과 '하나'를 찾기 위한 5년의 창

Jana Duggar는 사랑에 대한 그녀의 검색에 대해 공개했습니다. 다음은 그녀가 결혼을 위한 5년 창구와 주제에 대해 말한 모든 것입니다.

Sam Heughan은 자신이 '아웃랜더' 세트에서 무엇을 취할지 정확히 알고 있습니다.

Sam Heughan은 자신이 '아웃랜더' 세트에서 무엇을 취할지 정확히 알고 있습니다.

'아웃랜더'의 스타 샘 흑한은 최근 자신을 스타로 만든 역할인 제이미 프레이저를 기억하기 위해 세트장에서 무엇을 할 것인지를 밝혔다.

Fab Four 내부자에 따르면 밴드의 '가장 신나는 공연' 중 하나였던 초기 비틀즈 노래

Fab Four 내부자에 따르면 밴드의 '가장 신나는 공연' 중 하나였던 초기 비틀즈 노래

'She Loves You'는 한 시간 만에 작곡되고 하루 만에 녹음되었으며, 비틀즈의 경력 중 최고의 공연 중 하나인 비틀즈의 노래였습니다.

Dolly Parton은 다른 손자들이 아무도 하지 않을 때 그녀의 '병약한' 할머니를 도왔습니다. 그녀는 또한 그녀에게 장난을 쳤습니다

Dolly Parton은 다른 손자들이 아무도 하지 않을 때 그녀의 '병약한' 할머니를 도왔습니다. 그녀는 또한 그녀에게 장난을 쳤습니다

Dolly Parton과 그녀의 할머니 Bessie는 특별한 관계를 가졌습니다. Parton 할머니는 매우 아팠지만 Dolly는 그녀에게 장난을 쳤습니다.

타누키가 어떻게 실제 존재이면서 신화 속 존재일 수 있을까?

타누키가 어떻게 실제 존재이면서 신화 속 존재일 수 있을까?

통통한 배, 장난기 어린 눈, 일본 정원에 돌 조각상으로 나타나는 습관을 가진 타누키는 신화와 현실의 경계를 모호하게 만듭니다.

세상에서 가장 단단한 나무는 무엇인가?

세상에서 가장 단단한 나무는 무엇인가?

참나무나 히코리는 튼튼하다고 생각할 수도 있지만, 세상에서 가장 단단한 나무에 비하면 그 근처에도 못 미칩니다.

바다 깊은 곳에 숨어 있는 가장 무서운 바다 생물 10종

바다 깊은 곳에 숨어 있는 가장 무서운 바다 생물 10종

바다는 아름다움으로 가득하지만, 지구상에서 가장 무서운 바다 생물들도 숨어 있습니다. 이 동물들 중 다수는 해수면 아래, 어둡고 압력이 높은 심해에 숨어 있습니다.

마인크래프트 최고의 검 마법 부여 10가지

마인크래프트 최고의 검 마법 부여 10가지

적대적인 몹과 싸우거나 PvP 시나리오에 대비하고 있다면, 마인크래프트에서 제공하는 최고의 검 마법 부여를 아는 것이 큰 도움이 될 수 있습니다. 검에 마법을 부여하면 더 큰 피해를 입히고, 몹 드랍률을 높이고, 검의 내구도를 연장할 수 있습니다.

곰 요약: 마커스는 시카고에서 가장 친절하고, 부드럽고, 성실한 사람인가요?

곰 요약: 마커스는 시카고에서 가장 친절하고, 부드럽고, 성실한 사람인가요?

“Children”은 유명인의 카메오와 충격적인 소식을 전합니다.

9,800달러로 이 7인승 2008 Toyota RAV4를 타고 싶으신가요?

9,800달러로 이 7인승 2008 Toyota RAV4를 타고 싶으신가요?

이 RAV4는 상태가 매우 양호하며 의자 게임에 적합하다고 주장됩니다.

휴스턴의 여름 더위 속에서 Amazon 배달 밴이 불타 폭발

휴스턴의 여름 더위 속에서 Amazon 배달 밴이 불타 폭발

드론 영상에는 화재를 진압하기 위해 애쓰는 소방관들의 모습이 포착됐다.

Marvel의 Black Panther 쇼는 지금까지 가장 중요한 애니메이션 쇼가 될 것입니다

Marvel의 Black Panther 쇼는 지금까지 가장 중요한 애니메이션 쇼가 될 것입니다

Eyes of Wakanda는 MCU에 직접 연결되며 X-Men '97, What If..., Daredevil 등에 대한 업데이트도 제공됩니다.

안나 윈투어, 37년간의 보그 편집장직에서 물러나다 - 그리고 그녀는 사람을 채용합니다!

안나 윈투어, 37년간의 보그 편집장직에서 물러나다 - 그리고 그녀는 사람을 채용합니다!

1988년부터 미국판 보그에 합류한 오랜 편집장은 6월 26일 목요일 아침 직원 회의에서 이 소식을 발표했습니다.

케이트 미들턴의 아름다운 사파이어 약혼 반지에 대한 모든 것 (그리고 반지에서 영감을 얻은 왕실 전래품!)

케이트 미들턴의 아름다운 사파이어 약혼 반지에 대한 모든 것 (그리고 반지에서 영감을 얻은 왕실 전래품!)

케이트 미들턴의 약혼 반지는 윌리엄 왕자가 프로포즈하기 전에 다이애나 공주의 소유였던 것으로 유명합니다. 이 역사적인 작품에 대한 모든 정보를 여기에서 확인하세요.

라구나 비치 출연진: 그들은 지금 어디에 있나요?

라구나 비치 출연진: 그들은 지금 어디에 있나요?

'라구나 비치'는 2000년대 중반 고등학생 Lauren Conrad, Kristin Cavallari, Stephen Colletti 등의 삶을 따라갔습니다. MTV 리얼리티 시리즈의 출연진이 현재 있는 곳은 다음과 같습니다.

Dog the Bounty Hunter의 아내는 누구인가? Francie Frane에 대한 모든 것

Dog the Bounty Hunter의 아내는 누구인가? Francie Frane에 대한 모든 것

전직 목장주이자 현상금 사냥꾼인 도그와 결혼한 프랜시 프랜에 대한 모든 정보를 소개합니다.

대명사는 정말 무섭다

너무 자주 그렇듯 갑자기 와닿는다 다시 중간쯤이야 <아니, 태평양에 있는 사람 말고 마룬, 카니발에 있는 사람> 모든 헤드라인이 시끄러워…..

작문 실력을 향상시키는 3가지 입증된 방법

글쓰기의 이점과 그렇게 하는 데 도움이 되는 전략

작문 실력을 향상시키는 3가지 입증된 방법

2022년에는 GPT-3가 출시되면서 글쓰기 능력이 덜 중요해진 것 같습니다. AI를 사용하면 글이 서투른 사람들도 양질의 직원을 생성할 수 있습니다.

느린 침식: 사람들이 경력을 낭비하는 방식 공개

느린 침식: 사람들이 경력을 낭비하는 방식 공개

오늘날과 같이 급변하고 경쟁이 치열한 세상에서 경력은 개인의 성장, 재정적 안정 및 전반적인 삶의 만족도에 중요한 역할을 합니다. 그러나 많은 사람들은 침체와 불만족의 끊임없는 순환에 휩싸여 직업 생활에서 점차 쇠퇴하고 있습니다.

팟캐스트가 영향력 있는 이유는 무엇입니까?

팟캐스트가 영향력 있는 이유는 무엇입니까?

지난 주에 저는 PressGazette(영국 언론 뉴스 웹사이트)를 통해 발송된 보도 자료를 보았습니다. 이 기사는 Scandi 팟캐스트 호스팅 및 광고 회사인 Acast가 팟캐스팅에서 "아마도 가장 영향력 있는" 게시자 컨소시엄을 이끌 것이라고 발표했습니다.

Language