2015-02-09 4 views
0

Представьте себе следующую CMDКак выполнить * .cmd в другом каталоге, как если бы он работал в текущем каталоге?

c:\myscript.cmd 

java.exe myclass.class 

Если файл он работает в:

c:\temp\myclass.class 

Я хочу, чтобы запустить CMD файл, если он запущен в текущем каталоге, то есть моя команда линия открыта в c:\temp\

Я хочу более короткий путь бега:

c:\temp\>mv ../myscript.cmd . 
c:\temp\>myscript.cmd 
c:\temp\>mv myscript.cmd ..\ 

Мой вопрос: Как выполнить * .cmd в другом каталоге, как если бы он работал в текущем каталоге?

+0

Вы можете вызвать дочерний экземпляр 'cmd' с его рабочим каталогом в качестве цели. – Dai

+0

Не могли бы вы расширить это в ответ? – hawkeye

+2

Вы можете запускать скрипты, предоставляя полный или относительный путь, например. 'c: \ myscript.cmd' или даже' ../ myscript.cmd'. – Justin

ответ

0

Вы можете породить экземпляр ребенка cmd, который затем выполняет cd изменить рабочую папку, за которой следует команда для выполнения, это делается путем запуска cmd непосредственно, наряду с && конкатенировать команды:

cmd /c "cd PATH_OF_DESIRED_WORKING_DIRECTORY" && "myscript.cmd" 
+0

За исключением вопроса, спрашивающего, как * не * изменить текущий каталог. :-) –

+0

@HarryJohnston Установка текущего каталога необходима, но этот метод означает, что команда 'cd' влияет только на' myscript.cmd', а не на текущую текущую директорию в родительском контексте cmd. – Dai

+0

Зачем нужна установка текущего каталога? Согласно этому вопросу существующий текущий каталог 'c: \ temp' уже корректен. –

1

Если вы просто хотите запустить его, просто введите ..\myscript.cmd в командной строке. Он получает ваш текущий каталог как текущий каталог. Вы можете проверить это, поставив echo %CD% в качестве первой строки командного файла. Он должен печатать c:\temp\

Смежные вопросы