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.Odpowiedzi:
Powiedziałbym, że jest to prawdopodobnie błąd w twoim edytorze lub masz dziwne uprawnienia skonfigurowane.
Dość często edytuję pliki wsadowe za pomocą notatnika (podczas działania) i nie miałem problemu.
Nie jestem jednak pewien, czy można po prostu wstrzykiwać polecenia - zapamiętuje numer linii (tak myślę), który był włączony.
np. w pliku nietoperza, po uruchomieniu zakończy przetwarzanie.
Umieść pauzę w trzeciej linii, a następnie biegnij, ale nie naciskaj żadnego klawisza po pauzie. Edytuj oryginalny plik nietoperza, umieść polecenie w czwartym wierszu - a zobaczysz, że czwarty wiersz zostanie przetworzony.
źródło
Spróbowałbym zmienić linię
Do
Od http://ss64.com/nt/start.html :
Ten zaskoczył mnie, gdy jakiś czas temu próbowałem napisać VLC, a umieszczenie tam tytułu naprawiło dla mnie pozornie powiązany problem.
źródło
start
polecenia, chyba że masz absolutną, pozytywną, 100% pewność, że wynikowy wiersz polecenia nie będzie zawierał żadnych cudzysłowów. Jakstart
wspomina pomoc: zakłada się, że pierwszy cytowany parametr jest tytułem, bez względu na to, gdzie się pojawia.