web-dev-qa-db-ja.com

Windows 7での実行後に.batスクリプトがロックされるのはなぜですか?

Windows 7に移行して以来、.batスクリプトを開発しているときはいつでも、それを正しく行うチャンスが1つだけあります。スクリプトを実行するとすぐに、実行が完了したように見えても不明なプロセスによってロックされます。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を実行して、それを止めようとしました。また、startの代わりに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のtouchコマンドを使用してファイルを作成したことを言及する必要があります。コンピュータを再起動した後、他のコンピュータで以前に発生したことがありますが、この問題を再現することはできません。

4
Peter Nore

これはおそらくエディターのエラーであるか、奇妙な権限が設定されていると思います。

私は(実行中に)メモ帳でバッチファイルを編集することがよくありますが、問題はありません。

ただし、コマンドを挿入するだけでよいかどうかはわかりません。オンになっていた行番号(私は思う)を記憶しています。

例えばbatファイルでは、開始後、処理が終了します。

3行目に一時停止してから実行しますが、一時停止後にキーを押さないでください。元のbatファイルを編集し、4行目にコマンドを配置すると、4行目が処理されることがわかります。

3
William Hilsum

行を変えてみます

@start ConsolePortable.exe

@start "myProgram" ConsolePortable.exe

http://ss64.com/nt/start.html から:

START "title" [/ Dpath] [options] "command" [parameters]

ノート:

常にタイトルを含めます。これは、「マイスクリプト」のような単純な文字列、または空の引用符のペア「」にすることができます。Microsoftのドキュメントによると、タイトルはオプションですが、省略した場合は問題が発生する可能性があります。

ドキュメントファイルは、コマンドとしてファイルの名前を入力するだけで、ファイルの関連付けを通じて呼び出すことができます。例えばSTART "" Word.DOCは、.DOCファイル拡張子に関連付けられたアプリケーションを起動します

これは、しばらく前にVLCのスクリプトを作成しようとしたときに気が狂ってしまい、そこにタイトルを付けると、一見関連しているように見える問題が修正されました。

2
Mokubai