Установка для каталогов нулевых значений для пакетного файла - PullRequest
0 голосов
/ 04 мая 2018

У меня проблемы с тем, чтобы заставить этот пакетный скрипт работать так, как я хочу. Вместо того, чтобы вводить каждый параметр вручную, я хочу его, чтобы я мог просто нажать клавишу ввода в CMD, и он автоматически заполнится соответствующими IF в последней части кода.

::Setting of Variables
@Set /P RScript=Set path to R:_
@Set /P RProgram=Set path to RScript:_   
@Set /P RStartDir=Set Start Directory:_   
@Set /P BeginSims=Begin on which Loan?:_       
@Set /P EndSims=End on which Loan?:_         
@Set /P OutputDir=Set Output Directory:_   
@Set /P Deal=Set Deal input file (.txt):_         
@Set /P OutputFile=Name Deal Output File:_  
@Set /P AsOfDate=As of Date?:_  
@Set /P ThirtyYrSpread=Thirty Year Mortgage Spread?:_

::Inputs for Variables
::  "c:\program files\r\r-3.4.3\bin\x64\rscript.exe"      RScript
::  "c:\cirt 2014 - 1\model.r"                            RProgram
::  "c:\cirt 2014 - 1"                                    RStartDir
::  1                                                     BeginSims
::  5                                                     EndSims
::  "C:\BatchAll"                                         OutputDir
::  "2014-1 Loan.txt"                                     Deal
::  "2014-1"                                              OutputFile
::  "62017"                                               AsOfDate
::  "135"                                                 ThirtyYrSpread
::Command Prompt, /c Carries out command specified by string and then terminates, processing the R script and outputting a CSV file.
cmd /c ""%RScript%" "%RProgram%" "%RStartDir%" "%Begin%" "%End%" "%OutputDir%" "%Deal%" "%OutputFile%" "%AsOfDate%" "%ThirtyYrSpread%""

::if [%RScript%]==[] Set RScript=c:\program files\r\r-3.4.3\bin\x64\rscript.exe
::if [%RProgram%]==[] Set RProgram=C:\Cirt 2014 - 1\0.Mortgage Model.R
::if [%RStartDir%]==[] Set RStartDir=C:\Cirt 2014 - 1
::if [%Begin%]==[] Set Begin=1
::if [%End%]==[] Set End=5
::if [%OutputDir%]==[] Set OutputDir=C:\Cirt 2014 - 1
::if [%Deal%]==[] Set Deal=2014-1 Loan.txt
::if [%OutputFile%]==[] Set OutputFile=2014-1
::if [%AsOfDate%]==[] Set AsOfDate=62017
::if [%ThirtyYrSpread%] == [] Set ThirtyYrSpread=135`

В настоящее время выдается ошибка первой переменной, RScript. Это детали,

files\r\r-3.4.3\bin\x64\rscript.exe]==[] was unexpected at this time.
C:\Users\msamuels\Desktop>if [c:\program files\r\r-3.4.3\bin\x64\rscript.exe]==[] Set RScript=c:\program files\r\r-3.4.3\bin\x64\rscript.exe

Я какое-то время дурачился, интересно, есть ли у кого-нибудь предложения? Все необходимые файлы находятся в каталоге, так как, когда я запускаю его без IF и ввожу переменные вручную, все работает нормально.

1 Ответ

0 голосов
/ 04 мая 2018

Все, что вам нужно сделать, это установить все переменные, прежде чем запрашивать ввод. Если вы нажмете клавишу ввода в строке ввода, переменная останется неизменной.

@echo off
:: defaults
Set "RScript=c:\program files\r\r-3.4.3\bin\x64\rscript.exe"
Set "RProgram=C:\Mortgage\Cirt 2014 - 1\0.Mortgage Model.R"
Set "RStartDir=C:\Mortgage\Cirt 2014 - 1"
Set "Begin=1"
Set "End=5"
Set "OutputDir=C:\Mortgage\Cirt 2014 - 1"
Set "Deal=Cirt 2014-1 Loan Level.txt"
Set "OutputFile=Cirt 2014-1d"
Set "AsOfDate=62017"
Set "ThirtyYrSpread=135"

::Setting of Variables
ECHO PRESS ENTER AT ANY INPUT TO ACCEPT the DEFAULT VALUE.
Set /P "RScript=Set path to R:_"
Set /P "RProgram=Set path to RScript:_"
Set /P "RStartDir=Set Start Directory:_"
Set /P "BeginSims=Begin on which Loan?:_"
Set /P "EndSims=End on which Loan?:_"
Set /P "OutputDir=Set Output Directory:_"
Set /P "Deal=Set Deal input file (.txt):_"
Set /P "OutputFile=Name Deal Output File:_"
Set /P "AsOfDate=As of Date?:_"
Set /P "ThirtyYrSpread=Thirty Year Mortgage Spread?:_"


:: Command Prompt, /c Carries out command specified by string and then terminates, processing the R script and outputting a CSV file.
echo cmd /c "%RScript%" "%RProgram%" "%RStartDir%" "%Begin%" "%End%" "%OutputDir%" "%Deal%" "%OutputFile%" "%AsOfDate%" "%ThirtyYrSpread%"
pause

А вот результат простого нажатия Enter при каждом запросе пользователя.

PRESS ENTER AT ANY INPUT TO ACCEPT the DEFAULT VALUE.
Set path to R:_
Set path to RScript:_
Set Start Directory:_
Begin on which Loan?:_
End on which Loan?:_
Set Output Directory:_
Set Deal input file (.txt):_
Name Deal Output File:_
As of Date?:_
Thirty Year Mortgage Spread?:_
cmd /c "c:\program files\r\r-3.4.3\bin\x64\rscript.exe" "C:\Mortgage\Cirt 2014 - 1\0.Mortgage Model.R" "C:\Mortgage\Cirt 2014 - 1" "1" "5" "C:\Mortgage\Cirt 2014 - 1" "Cirt 2014-1 Loan Level.txt" "Cirt 2014-1d" "62017" "135"
Press any key to continue . . .

У меня не установлен R, поэтому я просто повторяю команду в конце. Удалите ECHO перед CMD, чтобы выполнить сценарий R.

...