Расписание задачи с пробелами в пути - PullRequest
0 голосов
/ 11 декабря 2008

Мы планируем задачу программно. Однако исполняемый файл, который должен быть запланирован, может быть установлен по пути с пробелами. то есть c: \ program Files \ folder \ folder \ folder program \ program.exe

Когда мы указываем этот путь в качестве параметра для Планировщика Tasjk, он не запускается, потому что не может найти исполняемый файл. Очевидно, его необходимо заключить в кавычки (").

Проблема, с которой мы сталкиваемся, заключается в том, что даже когда мы заключаем путь в кавычки, когда передаем его в качестве параметра (cmd + "\" + path + "\"), он все равно не включает кавычки в используемый путь чтобы запланировать задачу.

Кто-нибудь знает, как заставить кавычки быть включены в путь?

РЕДАКТИРОВАТЬ: Ответ на комментарий:

У нас была та же идея, и вот проблема. Формат ~ 1 основан на индексе папки, так что, если, скажем, у вас были эти 3 папки:

Program Applications
Program Files
Program Zips

тогда путь будет: progra ~ 2

Теперь, если вы скажете, что таких папок более 10, путь может выглядеть следующим образом: progr ~ 12.

Теперь нельзя сказать, что это не жизнеспособное решение, но необходимость подсчитывать папки, чтобы найти правильную, а затем использовать индекс для построения пути, является немного громоздкой и не очень чистой ИМО.

Мы надеемся, что есть лучший способ.

РЕДАКТИРОВАТЬ 2: Добавлен соответствующий фрагмент кода

Вы просили код: вот как мы строим строку Args, которую мы передаем планировщику:

string args = "/CREATE /RU SYSTEM /SC " + taskSchedule + " /MO " + taskModifier + " /SD " + taskStartDate + " /ST " + taskStartTime + " /TN " + taskName + " /TR \"" + taskSource + "\"";

где taskSource - путь к приложению.

Ответы [ 5 ]

2 голосов
/ 11 декабря 2008

Похоже, вы используете schtasks.exe - мне потребовалось больше времени, чтобы понять это, чем найти ответ! Более подробную информацию, пожалуйста! :) Я нашел ответ с помощью быстрого поиска в Google

Попробуйте этот код:

string args = "/CREATE /RU SYSTEM /SC " + taskSchedule + " /MO " + taskModifier + " /SD " + taskStartDate + " /ST " + taskStartTime + " /TN " + taskName + " /TR \"\\\"" + taskSource + "\""

Это добавляет \ "в начале значения параметра TR.

0 голосов
/ 11 декабря 2008

Поместите пакетный файл в место, где нет пробелов.

В командном файле запустите команды программы с пробелами.

0 голосов
/ 11 декабря 2008

можете показать код?

т.е. сделайте путь в вышеприведенном примере «path» (с кавычками), а затем сделайте вызов

Это также может помочь http://www.jguru.com/faq/viewquestion.jsp?EID=768691

0 голосов
/ 11 декабря 2008

Гадание на коротком имени не очень хороший способ, так как это деталь реализации и может меняться с каждой версией Windows.

Если вам нужно короткое имя, просто спросите его: http://www.c -sharpcorner.com / UploadFile / crajesh1981 / RajeshPage103142006044841AM / RajeshPage1.aspx

0 голосов
/ 11 декабря 2008

вы можете заменить программные файлы на progra ~ 1
и поместите программу в папку ~ 1 (первые 6 букв и ~ 1), чтобы она заработала, пока кто-то не отправит правильный ответ

...