作成したバッチ ファイルを使用して R スクリプトを実行しようとしています。バッチ スクリプトを柔軟にして、他のコンピューターに移動したり、ネットワーク ドライブから実行したりして、すべての場合に機能するようにしたいと考えています。私がしていることは、バッチ ファイルが開かれたファイルのパスを収集し、そのパスを使用して R スクリプトをアクティブにすることです。
特殊文字を含まないファイル パスがある場合は問題なく動作しますが、特殊文字で問題が発生しました。
コードは次のとおりです。
@ECHO OFF
setlocal EnableDelayedExpansion
set "_SCRIPT_DRIVE=%~d0"
set "_SCRIPT_PATH=%~p0"
set "PATH=!_SCRIPT_DRIVE!!_SCRIPT_PATH!"
これは、私が行うときのように、希望どおりに機能するようです
ECHO !PATH!
目的の出力が得られます
C:\\A&B\File
ただし、後で Rscript.exe コマンドを使用してこれを実行すると、展開の遅延が認識されず、アンパサンドが特殊文字として実行されます。次の入力:
"!PATH!\R-3.0.1\bin\Rscript.exe" "!PATH!Scripts\Test.R"
戻り値:
'C:\\A' is not recognized as an internal or external command, operable program or batch file.
ただし、この問題が発生するのは、Rscript.exe を実行しようとしたときだけです。次のようなファイルを開くことができます
"!PATH!Scripts\Test.R"
そして、それは問題なく実行されます。他の誰かが以前にこの問題に遭遇したことがありますか? 私の構文に問題がある人はいますか?
編集:解決済み
将来この投稿に出くわした人のために、私はこの問題の解決策を見つけることができました. バッチ スクリプト エラーではなく、Rscript.exe の問題であることがわかりました。何が起こっているのかわかりません。に直接ある Rscript.exe を使用する代わりに、\bin
さらに一歩進んで、"!PATH!\R-3.0.1\bin\i386\Rscript.exe"
動作するものを使用する必要があります。おそらく、64 ビットではなく 32 ビット マシンで実行しているためです。