Мне нужно запустить bat(fix.bat) в командном файле cmd (скажем, sample.cmd на c:) Проблема в том, что, несмотря на использование: start /WAIT cmd.exe /CD:\dev\sys\fix.bat

fix.bat запускается как из родительской команды (c:\sample.cmd), но мне нужно заставить его запускаться по его пути ("d:\dev\sys")

Как запустить летучую мышь в другой летучей мыши, чтобы вторая запускалась как выполненная со своего собственного пути, где она находится?

Там в примере помогло бы ввести:"cd d:\dev\sys", а затем вызвать fix.bat, но я хочу избежать этого.

2 ответа2

0

Есть несколько вариантов:-

  1. Создайте ссылку с помощью проводника: найдите fix.bat, щелкните правой кнопкой мыши, выберите « Копировать», щелкните правой кнопкой мыши в другом месте и выберите « Вставить ярлык» ; Теперь переименуйте, чтобы избавиться от "Ярлыка на" от имени и, возможно, также «.bat»: затем измените родительскую команду, чтобы она вызывала D:\dev\sys\fix.lnk вместо D:\dev\sys\fix .bat и ссылка установит каталог.
  2. Создайте трехстрочный файл callfix.bat, содержащий d: cd \dev\sys и fix.bat:, затем вызовите его вместо fix.bat в родительской команде.
  3. В родительской команде start /WAIT cmd.exe /C "D: & cd \dev\sys & fix.bat" .

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

0

У вас есть только 2 варианта.

1) Измените ваш текущий каталог в вашем скрипте sample.cmd:

pushd d:\dev\sys
start /wait cmd.exe /c fix.bat

Но вы заявили, что не хотите этого делать.

2) Единственный другой вариант - изменить fix.bat, чтобы изменить текущий каталог на тот, где он выполняется. Самый простой способ сделать это - добавить следующую строку в (или около) в верхней части скрипта:

pushd "%~f0"

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

РЕДАКТИРОВАТЬ или принять одно из других предложений от AFH :-)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .