Turbo C & Batch File - PullRequest
       4

Turbo C & Batch File

0 голосов
/ 08 сентября 2011

Мой пакетный файл выполняется с помощью программы c, но когда я использовал start notepad.exe в пакетном файле

показывает плохую команду. Но когда я выполняю свой пакетный файл по отдельности, он работает отлично. Что такое

причина?

Ответы [ 4 ]

0 голосов
/ 08 сентября 2011

start является внутренней командой cmd.exe;это не программа сама по себе.Для запуска start вам нужно запустить cmd.exe и заставить cmd.exe выполнить start.

Функция system() C выполняет оболочку (вероятно, cmd.exe в Windows) и передаетаргумент этой оболочки - и start «работает».

Функции exec* не загружают оболочку - и start сам по себе «не работает»: он должен быть«внутри» cmd.exe

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void) {
  // system "works"
  system("start C:\\tmp");

  // this don't work
  execl("start", "start", "C:\\Windows", (char*)0);
  printf("Oops: execl with start failed\n");

  // this "works"
  execl("C:\\Windows\\System32\\cmd.exe", "start", "/c", "start", "C:\\Windows\\", (char*)0);
  printf("Oops: execl with <path>\\cmd.exe failed\n");

  return 0;
}
0 голосов
/ 08 сентября 2011

Это должно быть связано с путем вашего notepad.exe, если вы находитесь в Windows, попробуйте добавить путь notepad.exe к переменной окружения «PATH», что может упростить многие вещи.

0 голосов
/ 08 сентября 2011

вы говорите, что выполняете командный файл из программы на Си.Вы уверены, что среда правильно настроена, когда вы начинаете выполнять командный файл?

если переменная окружения PATH установлена ​​неправильно при выполнении пакетного файла, то пакетный файл не будет выполнен.но пакетный файл будет работать без проблем при запуске из командной строки, поскольку в этом случае среда настроена правильно.

0 голосов
/ 08 сентября 2011

Не могли бы вы опубликовать свой файл летучей мыши?Возможно, что путь к notepad.exe относительно того, где вы запускаете свой bat-файл, когда вы запускаете его вручную, но когда вы вызываете его из приложения C, вы запускаете его из расположения исполняемого файла C, поэтому он больше не находитnotepad.exe или файл, который вы можете передать в notepad.exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...