これまで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:===================================================================