3

С тех пор, как я перешел на Windows 7, всякий раз, когда я занимаюсь разработкой сценария .bat, у меня есть только один шанс сделать это правильно. Как только я выполняю сценарий, он блокируется неизвестным процессом, даже если кажется, что выполнение завершено, и мне приходится принудительно выходить из проводника или перезапускать, чтобы иметь возможность снова редактировать файл .bat.

Например, если я создаю файл .bat,

@echo off
@start prog\ConsolePortable\ConsolePortable.exe

затем, после его выполнения, поймите, что мне нужно изменить некоторые аспекты сценария,

@echo off
@cd prog\ConsolePortable
@start ConsolePortable.exe

Тогда я не смогу сохранить свои изменения. Например, в gvim я получаю сообщение «console.bat» только для чтения (добавьте! переопределить), "а затем, когда я пытаюсь переопределить, я получаю сообщение" E212: не удается открыть файл для записи ".

Конечно, должен быть какой-то сценарий, не требующий ProcessExplorer на каждом компьютере, который я использую. Как найти процесс .bat-файла, чтобы остановить его? Я попробовал ProcessExplorer и BSOD'ы пытались остановить его. Я также попытался использовать cmd /c вместо начала.

РЕДАКТИРОВАТЬ: ConsolePortable начинается нормально здесь и, кажется, завершить нормально, однако следующие настройки теста не останавливает редактор:

// Program.java
class Program {public static void main(String[] args) {System.exit(0);}}

// startProgram.bat 
echo Starting Program in Java ...
start java Program
echo exiting bat file ...

РЕДАКТИРОВАТЬ 2: Возможно, я должен упомянуть, что я создал файл с помощью сенсорной команды в Cygwin. После перезагрузки компьютера я не могу продублировать эту проблему, хотя я встречал ее на других компьютерах раньше.

2 ответа2

2

Я бы сказал, что это возможно ошибка вашего редактора, или у вас установлены странные разрешения.

Я довольно часто редактирую командные файлы с помощью блокнота (пока он работает), и у меня не было проблем.

Однако я не уверен, что вы можете просто вводить команды - он запоминает номер строки (я думаю), что он был включен.

например, в вашем файле bat, после запуска он завершит обработку.

Поставьте паузу в третьей строке, затем запустите, но не нажимайте клавишу после паузы. Отредактируйте исходный файл bat, поместите команду в четвертую строку - и вы увидите, что четвертая строка будет обработана.

2

Я бы попробовал сменить строчку

@start ConsolePortable.exe

к

@start "myProgram" ConsolePortable.exe

Начиная с http://ss64.com/nt/start.html:

НАЧАТЬ "заголовок" [/Dpath] [параметры] "команда" [параметры]

Заметки:

Всегда включайте TITLE, это может быть простая строка типа "Мой сценарий" или просто пара пустых кавычек ».« Согласно документации Microsoft, заголовок является необязательным, но у вас могут возникнуть проблемы, если он пропущен.

Файлы документов могут быть вызваны через их файловую ассоциацию, просто введя имя файла в качестве команды. Например, START "" WORD.DOC запустит приложение, связанное с.Расширение файла DOC

Это застало меня врасплох, когда я попытался написать сценарий VLC некоторое время назад, и добавление заголовка устранило для меня внешне связанную проблему.

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