2014-10-20 102 views
0

我將首先爲必須提出這樣一個基本問題而道歉,我確信這是一個非常簡單的修復方法,但我無法找到所需的信息(或者將我發現的信息適應於我的情況)。我剛開始編寫批處理文件,我只是開始,因爲我想讓R-Script的執行對於不使用R的人來說很容易。批處理文件:使用變量指定重定向位置

所以下面的代碼運行R-Script就好了,該腳本存在於名爲'R Files'的文件夾中,腳本本身將其輸出指向'Output'文件夾,其中'R Files'和'Output folders共享同一個父文件夾。

R --vanilla --quiet <growth_plot_driver.R >console_output.txt 

然而,考慮到該代碼的其他用戶不可能把父文件夾中,我做了我認爲這將是最好的變量指定的輸入和輸出文件的同一位置。這是我遇到問題的地方,「系統找不到指定的文件」類。我已經嘗試了以下代碼的很多變體。

set "path1=%cd%\growth_plot_driver.R" 
cd.. 
cd Output 
set "path2=%cd%\console_output.txt" 
R --vanilla --quiet <%path1% >%path2% 

但正如我所說,我是新來的這一點,如果有一個更好的方式去了解這一點,我會感激聽到它。

+1

目錄中是否有空格?如果是這樣,這是行不通的。你需要把引號放在路徑上,而不是變量。例如,嘗試使用'set path1 =「%cd%\ growth_plot_driver.R」'並設置path2 =「%cd%\ console_output.txt」'。另外,考慮使用'Rscript'來達到這些目的,你不會讓整個控制檯加載。 – nograpes 2014-10-20 03:17:20

回答

3

nograpes曾建議已經一種可能的解決方案:

set path1="%cd%\growth_plot_driver.R" 
cd ..\Output 
set path2="%cd%\console_output.txt" 
R --vanilla --quiet <%path1% >%path2% 

這定義的環境變量和path1path2與含有雙引號的字符串值。

但我更喜歡這樣的病例:

set "path1=%cd%\growth_plot_driver.R" 
cd ..\Output 
set "path2=%cd%\console_output.txt" 
R --vanilla --quiet <"%path1%" >"%path2%" 

這定義了環境變量path1path2字符串值不包含雙引號。但是,在路徑空間中所需的雙引號現在用於引用兩個環境變量的值。換句話說,環境變量實際上只包含具有完整路徑的文件名,並且所需的雙引號被用在真正需要的命令上。

+0

謝謝@nograpes和Mofi,我的問題似乎是目錄名稱空間的結果。 (從R編程到寫入Windows命令行的批處理文件正在我的腦海裏) – frank2165 2014-10-20 06:18:41

相關問題