cmd из R с помощью wkhtmltopdf

Еще один -

 #  ^-?0*(?:20(?:[0-4][0-9]|5[0-5])|[0-9]{1,3})$

 ^ 
 -?
 0*
 (?:
      20
      (?:
           [0-4] [0-9] 
        |  
           5 [0-5] 
      )
   |  
      [0-9]{1,3} 
 )
 $
0
задан Alexandros 13 July 2018 в 12:41
поделиться

2 ответа

Я понял, что случилось. Как я написал в комментарии, после использования shell(x) вместо system(x) он вернулся 'C:/Program' is not recognized as an internal or external command, operable program or batch file.. Поэтому я переустановил свой wkhtmltopdf в папку, имя которой не содержит пробелов. Итак, теперь wkhtmltopdf_exe:

wkhtmltopdf_exe="C:/Programs/wkhtmltopdf/bin/wkhtmltopdf.exe"

Остальная часть кода одинаков. Последующее наблюдение здесь было бы неплохо, есть ли способ обходных пространств в именах папок? Или я всегда должен избегать пробелов? Помещение пути wkhtmltopdf в кавычки не помогло.

Благодарим пользователя JAD за исправление моего первого кода

0
ответ дан Alexandros 17 August 2018 в 12:50
поделиться

То, что вы пытаетесь вставить как команду ("C:/Program Files/wkhtmltopdf/bin>wkhtmltopdf https://finance.yahoo.com/ \"C:/TemporaryFolder/myhtml.pdf\""), не совсем работает. Первая часть ("C:/Program Files/wkhtmltopdf/bin>) на самом деле является подсказкой, когда вы запускаете ее в команде. Это не входит в команду, но вместо этого показывает, в какой директории вы используете эту команду.

Если вы замените wkhtmltopdf на C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe, он должен работать нормально:

URL="https://finance.yahoo.com/"
wkhtmltopdf_exe="C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe"
save_as="C:/TemporaryFolder/myhtml.pdf"
x=paste0(wkhtmltopdf_exe," ",URL," ",'\"',save_as,'\"')
system(x)

Чтобы ответить на ваш второй вопрос, вызов system() запускает команду через CMD. Таким образом, в основном все, что вы можете испортить через CMD.exe, вы можете испортить через system().

1
ответ дан JAD 17 August 2018 в 12:50
поделиться
  • 1
    Благодарим вас за быстрый ответ и немного объясним, как работает на самом деле. Я пробовал ваш код, но он все еще ничего не делал ... мой C:/TemporaryFolder/ по-прежнему пуст после запуска этого кода. Однако, когда я делаю y=system(x) с вашим кодом y, это 127 по какой-то причине ... – Alexandros 13 July 2018 в 13:13
  • 2
    hmm, 127 как код ошибки обычно означает, что файл не найден. Можете ли вы подтвердить имя исполняемого файла для команды wkhtmltopdf is C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe? – JAD 13 July 2018 в 13:15
  • 3
    Да, я подтверждаю. Этот parth работает, когда я использую cmd. – Alexandros 13 July 2018 в 13:31
  • 4
    Я попытался использовать shell вместо system. Я недавно краснел, они должны работать одинаково для большинства случаев (это правда?). Это вернуло мне ошибку: 'C:/Program' is not recognized as an internal or external command, operable program or batch file.. Это ту же ошибку, что и 127? – Alexandros 13 July 2018 в 15:17
Другие вопросы по тегам:

Похожие вопросы: