【R言語&Batch】Rスクリプトをバッチ実行する

これまでJscriptを使ってRを実行する方法は以下記事で触れていたが、バッチ(.bat)での実行方法の記事は無かったので作成。
cochineal19.hatenablog.com
cochineal19.hatenablog.com

Rスクリプトをこのバッチファイルにドラッグ&ドロップするとRが実行され、ログファイルが出力される仕様。
下記コード内のRscript_exeは各個人のexe保存先を設定。
R側の受け取り方法は上記その2を参照。

@echo off

rem:===================================================================
rem: Setting
rem:===================================================================

set Rscript_exe="C:\Program Files\R\R-4.2.3\bin\Rscript.exe"

set RscriptPath="%~dp1%~nx1"
set RscriptPath=%RscriptPath:\=/%

set RscriptFolder="%~dp1"
set RscriptFolder=%RscriptFolder:\=/%

set RscriptName="%~nx1"

set yymmdd=%date:/=%
set yymmdd=%yymmdd: =0%

set LogName="%~dp1__%~n1_%yymmdd%.log"
echo %LogName%


rem:===================================================================
rem: Exec
rem:===================================================================

echo 以下がドラッグ&ドロップされました。
echo ・フォルダ名:%RscriptFolder:"=%
echo ・ファイル名:%RscriptName:"=%
echo ・拡張子名 :%~x1
echo.

set TRUE_FALSE=FALSE
if "%~x1"==".R" set TRUE_FALSE=TRUE
if "%~x1"==".r" set TRUE_FALSE=TRUE

if %TRUE_FALSE%==FALSE (
  echo Rスクリプトをドラッグ&ドロップしてください。
  goto no1
)


set /P selected="実行しますか? 実行する場合、1を入力してください。"
if /i %selected%==1 (
  goto yes1
)


:no1
echo 処理を中止しました。
goto exitlabel


:yes1
echo 実行します。


echo ------------------------------------------------------------- > %LogName%
echo  対象ファイル:%RscriptPath% >> %LogName%
echo  実行日時  :%RscriptPath% >> %LogName%
echo ------------------------------------------------------------- >> %LogName%

%Rscript_exe% --slave --vanilla %RscriptPath% %RscriptFolder% "__error.txt" >> %LogName% 2>&1

echo -- >> %LogName%

echo ------------------------------------------------------------- >> %LogName%
echo  End of File >> %LogName%
echo ------------------------------------------------------------- >> %LogName%


echo 終了しました。

:exitlabel
pause

rem:===================================================================
rem: End of File
rem:===================================================================
本ブログは個人メモです。 本ブログの内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。