-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathbatchfiles.tex
322 lines (249 loc) · 11.3 KB
/
batchfiles.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
\section{Windows Batch Files for R}
G. Grothendieck
Software and documentation is (c) 2013 GKX Associates Inc. and licensed
under \href{http://www.gnu.org/licenses/gpl-2.0.html}{GPL 2.0}.
\subsection{Introduction}
This document describes a number of Windows batch, javascript and
\texttt{.hta} files that may be used in conjunction with R. Each is self
contained and independent of the others. Each requires no installation -
just place it on the Windows path\footnote{To display the Windows path
enter \texttt{path} at the Windows \texttt{cmd} line.}.
\texttt{R.bat} and \texttt{Rpathset.bat} are alternatives to each other
intended to facilitate the use of R without having to permanently modify
the Windows system PATH or otherwise use the Windows control panel.
\texttt{R.bat} uses heuristics to automatically locate \texttt{R},
\texttt{MiKTeX} and \texttt{Rtools} while \texttt{Rpathset.bat} takes a
simpler approach of having the user manually edit the \texttt{set}
statements in it to configure it. \texttt{R.bat} does not require
changes when you install a new version of R but \texttt{Rpathset.bat}
does. \texttt{R.bat help} gives a quick overview of that batch file.
\texttt{movedir.bat} and \texttt{copydir.bat} are used for moving or
copying packages from one library to another.
\texttt{el.js} runs its arguments in elevated mode (i.e.~with
Administrator privileges).
\texttt{clip2r.js} copies the current clipboard into a running R
instance. It can be used with vim or other text editor.
\texttt{find-miktex.hta} displays a popup window showing where it found
MiKTeX.
\subsection{R.bat}
\subsubsection{Purpose}
The purpose of R.bat is to facilitiate the use of R from the Windows
\texttt{cmd} line by eliminating the need to make any systems changes.
There is no need to modify the Windows PATH or to set any environment
variables for standard configurations of R. It will automatically locate
R (and Rtools and MiKTeX if installed) and then run \texttt{R.exe},
\texttt{Rgui.exe} or other command.
It is a self contained no-install script with no dependencies so just
place it anywhere on your Windows path.
\subsubsection{Typical Usage}
Typical usage to launch R gui is the following:
\begin{verbatim}
R.bat gui
\end{verbatim}
If R.exe is not on the Windows path or is after R.bat on the path then
the above can be shortened to:
\begin{verbatim}
R gui
\end{verbatim}
Either of these commands runs \texttt{Rgui.exe} along with further
arguments, if any. For example,
\begin{verbatim}
R.bat gui --help
\end{verbatim}
will run:
\begin{verbatim}
Rgui.exe --help
\end{verbatim}
\subsubsection{Other R Executables}
Other executable files that come with R (\texttt{R.exe},
\texttt{Rcmd.exe}, \texttt{Rscript.exe}) can be run in a similar way:
\begin{verbatim}
R.bat --help
R.bat cmd --help
R.bat script --help
\end{verbatim}
(\texttt{RSetReg.exe} is another executable that comes with R for
Windows. It will be discussed later.)
\subsubsection{Support Subcommands}
There are also some support commands:
\begin{verbatim}
R.bat cd
R.bat dir
R.bat help
R.bat show
\end{verbatim}
\texttt{R.bat cd} changes to the \texttt{R\_ROOT} directory (typically
\texttt{C:\textbackslash{}\textbackslash{}Program Files\textbackslash{}\textbackslash{}R}).
\texttt{R.bat dir} displays the contents of that directory.
\texttt{R.bat show} shows the values of the \texttt{R\_} environment
that \texttt{R.bat} uses. Here is a list with typical values. These
values are determined by the script heuristically (or the user can set
any before running \texttt{R.bat} or by customizing \texttt{R.bat}
itself by setting any of them near top of the script).
\begin{verbatim}
R_ARCH=x64
R_CMD=RShow
R_HOME=C:\\Program Files\\R\\R-2.15.2
R_MIKTEX_PATH=\\Program Files (x86)\\MiKTeX 2.9\\miktex\\bin
R_PATH=C:\\Program Files\\R\\R-2.15.2\\bin\\x64
R_REGISTRY=1
R_ROOT=C:\\Program Files\\R
R_TOOLS=C:\\Rtools
R_TOOLS_PATH=C:\\Rtools\\bin;C:\\Rtools\\gcc-4.6.3\\bin;
R_TOOLS_VERSION=3.0.0.1927
R_VER=R-2.15.2
\end{verbatim}
\texttt{R\_PATH}, \texttt{R\_MIKTEX\_PATH} and \texttt{R\_TOOLS\_PATH}
are the paths to the directories holding the \texttt{R}, \texttt{MiKTeX}
and \texttt{Rtools} binaries.
\texttt{R\_CMD} indicates the subcommand or if no subcommand specified
then is derived from the name of the script. For example if the script
were renamed \texttt{Rgui.bat} then if no subcommand were specified it
would default to \texttt{gui}.
\texttt{R\_ROOT} is the directory holding all the R installations.
\texttt{R\_HOME} is the directory of the particular R installation.
\texttt{R\_HOME} is made up of \texttt{R\_ROOT} and \texttt{R\_VER} so
that \texttt{R\_VER} represents the directory that holds the particular
R version used. \texttt{R\_ARCH} is \texttt{i386} or \texttt{x64} for 32
bit or 64 bit R respectively. It can also be specified as \texttt{32} or
\texttt{64} in which case it will be translated automatically.
\subsubsection{Path Setting Subcommands}
The command
\begin{verbatim}
R.bat path
\end{verbatim}
adds \texttt{R\_PATH}, \texttt{R\_MIKTEX\_PATH} and \texttt{R\_TOOLS} to
the Windows path for the current \texttt{cmd} line session. No other
\texttt{cmd} line sessions are affected and there are no permanent
changes to the system. Once this is run one no longer needs R.bat in the
current session as the R binaries such as \texttt{R.exe},
\texttt{Rgui.exe} will be directly on the path. (An alternative to this
is the \texttt{Rpathset.bat} utility which will be desribed later.)
\begin{verbatim}
R.bat tools
\end{verbatim}
is similar except only \texttt{R\_TOOLS\_PATH} and
\texttt{R\_MIKTEX\_PATH} are added to the path. This might be useful if
you need to use those utilities without R.
\subsubsection{Selecting R Version}
For R installations using the standard locations and not specifying any
of the R\_ environment variables the registry will determine which
version of R is used (assuming \texttt{R\_REGISTRY} is not 0). If R is
not found in the registry the R installation in \texttt{R\_ROOT} which
has the most recent date will be used.
We can change which version of R is used like this:
\begin{verbatim}
set R_VER=R-2.14.0
\end{verbatim}
and now for the remainder of this \texttt{cmd} line session that version
will be used. If one wants to use two different R versions at once we
could spawn a new \texttt{cmd} line session with the new version:
\begin{verbatim}
start
\end{verbatim}
and then enter the same set command into the new window. Now any use of
R in the original window will use the default version and in the new
version will use the specified version.
One can change the registry entry permanently to refer to a particlar
version like this:
\begin{verbatim}
cmd /c set R_VER=R-2.14.0 ^& R.bat SetReg
\end{verbatim}
This requires Administrator privileges so a window will pop up
requesting permission to proceed.
If the registry is empty or \texttt{R\_REGISTRY=0} then the default
version is determined by which R install directory is the most recent.
To make a particular R install directory the most recent run the
following in a \texttt{cmd} line session with Administrator privileges:
\begin{verbatim}
cmd /c set R_VER=R-2.14.0 ^& R.bat touch
\end{verbatim}
The \texttt{el.js} command that comes with the batch utilities is one
way to elevate the command to run with such privileges:
\begin{verbatim}
el cmd /c set R_VER=R-2.14.0 ^& R.bat touch
\end{verbatim}
Note that \texttt{R.bat SetReg} and \texttt{R.bat touch} make permanent
changes to the system (namely installing or uninstalling the R key and
updating the date on a particular R directory) but the other subcommands
do not.
\subsubsection{Heuristic to Locate R}
\begin{enumerate}
\def\labelenumi{\arabic{enumi}.}
\item
If \texttt{.\textbackslash{}\textbackslash{}R.exe} exists use implied
\texttt{R\_PATH} and skip remaining points.
\item
If
\texttt{.\textbackslash{}\textbackslash{}\{x64,i386\}\textbackslash{}\textbackslash{}R.exe}
or
\texttt{.\textbackslash{}\textbackslash{}bin\textbackslash{}\textbackslash{}\{x64,i386\}\textbackslash{}\textbackslash{}R.exe}
exists use implied \texttt{R\_HOME}.
\item
If \texttt{R\_HOME} defined then derive any of \texttt{R\_ROOT} and
\texttt{R\_VER} that are not already defined.
\item
If \texttt{R\_PATH} defined then derive any of \texttt{R\_ROOT},
\texttt{R\_HOME}, \texttt{R\_VER} and \texttt{R\_ARCH} that are not
already defined.
\item
If \texttt{R\_REGISTRY=1} and R found in registry derive any of
\texttt{R\_HOME}, \texttt{R\_ROOT} and \texttt{R\_VER} that are not
already defined.
\item
If R\_ROOT not defined try
\texttt{\%ProgramFiles\%\textbackslash{}\textbackslash{}R\textbackslash{}\textbackslash{}*},
\texttt{\%ProgramFiles(x86)\%\textbackslash{}\textbackslash{}R\textbackslash{}\textbackslash{}*}
and then \texttt{\%SystemRoot\%\textbackslash{}\textbackslash{}R} else
error.
\item
If \texttt{R\_VER} not defined use last directory in
\texttt{cd \%R\_ROOT\% \& dir /od}.
\item
if \texttt{R\_ARCH} not defined try
\texttt{\%R\_ROOT\%\textbackslash{}\textbackslash{}\%}R\_VER\texttt{\%\textbackslash{}\textbackslash{}bin\textbackslash{}\textbackslash{}x64\textbackslash{}\textbackslash{}R.exe}
and then
\texttt{\%R\_ROOT\%\textbackslash{}\textbackslash{}\%}R\_VER\texttt{\%\textbackslash{}\textbackslash{}bin\textbackslash{}\textbackslash{}i386\textbackslash{}\textbackslash{}R.exe}
\item
If \texttt{R\_ROOT}, \texttt{R\_VER} and \texttt{R\_ARCH} defined skip
remaining points.
\item
If \texttt{R.exe} found on \texttt{PATH} use implied \texttt{R\_PATH}.
\end{enumerate}
\subsection{Rpathset.bat}
An alternative to
\begin{verbatim}
R.bat path
\end{verbatim}
is the \texttt{Rpathset.bat}. Unlike \texttt{R.bat},
\texttt{Rpathset.bat} is not automatic but requires that the user modify
the various set commands in it. Running \texttt{Rpathset.bat} then sets
the path accordingly and from then on in the session one can access
Rgui.exe, etc. on the path. Although \texttt{Rpathset.bat} involves
manual editing it does have the advantage that as a consequence it is
very simple -- not much more than a collection of Windows batch set
commands.
The set statements are documented in the source of the file itself.
\subsection{movedir.bat and copydir.bat}
\texttt{movedir.bat} and \texttt{copydir.bat} move or copy the packages
from one library to another. If used to transfer packages from one
version of R to another it is recommended that the user run
\texttt{upgrade.packages()} in the target. For example, assuming the
default location for the user libraries:
\begin{verbatim}
cd %userprofile%\\Documents\\win-library
copydir 2.15\\library 3.0\\library
R.bat gui
... now enter update.packages() into R...
\end{verbatim}
\subsection{el.js}
\texttt{el.js} runs its arguments elevated (i.e.~with Adminstrator
privileges).
\subsection{clip2r.js}
This program writes the clipboard into the running R session. It can be
used with vim or other editor. See the source for additional
instructions.
\subsection{find-mixtex.hta}
This program displays a window showing where MiKTeX was found. It uses
the MiKTeX API. This API is not used by \texttt{R.bat} . It may be
incorporated into \texttt{R.bat} in the future.