Od kiedy przeniosłem się do systemu Windows 7, za każdym razem, gdy rozwijam skrypt .bat, mam dokładnie jedną szansę, aby go poprawnie. Jak tylko wykonam skrypt, zostaje on zablokowany przez nieznany proces, nawet jeśli wydaje się, że wykonanie zostało zakończone, i muszę wymusić zamknięcie programu explorer lub zrestartowanie, aby móc ponownie edytować plik .bat.
Na przykład, jeśli utworzę plik .bat,
@echo off
@start prog\ConsolePortable\ConsolePortable.exe
po wykonaniu, uświadom sobie, że muszę zmienić jakiś aspekt skryptu,
@echo off
@cd prog\ConsolePortable
@start ConsolePortable.exe
Wtedy nie będę mógł zapisać moich zmian. Na przykład w gvim pojawia się komunikat „„ console.bat ”jest tylko do odczytu (dodaj! Zastąpić)”, a następnie, gdy próbuję zastąpić, pojawia się komunikat „E212: Nie można otworzyć pliku dla pisanie."
Z pewnością musi istnieć jakiś sposób pisania skryptów bez wymagania ProcessExplorer na każdym komputerze, którego używam. W jaki sposób można znaleźć proces pliku .bat, aby go zatrzymać? Próbowałem ProcessExplorer i BSOD próbowałem to zatrzymać. Próbowałem też użyć cmd / c zamiast startu.
EDYCJA: ConsolePortable zaczyna się tutaj dobrze i wygląda na to, że kończy się dobrze, jednak następująca konfiguracja testowa nie zamraża edytora:
// 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 ...
EDYCJA 2: Być może powinienem wspomnieć, że utworzyłem plik za pomocą polecenia touch w cygwin. Po ponownym uruchomieniu komputera nie mogę powielić tego problemu, chociaż wcześniej napotykałem go na innych komputerach.
cmd
oknie? Nie jestem do końca pewien, jaka byłaby składnia, ale możesz dodać polecenie na końcu .bat, aby spawnować nowecmd
okno (do następnego uruchomienia) i zabić stare, co powinno zwolnić plik.