バッチファイル自体を再起動する方法は?


2

バッチ自体を自動的に再起動する方法は?

バッチのファイル名が変更された場合、

start <fixedbatchfilename>

ファイル名は変更されますが、コマンドは変更されないため、失敗する必要があります。

実行可能な方法はありますか

start <autogetbatchfilenameitself> ?

なぜファイル名が変わるのですか?
ケルタリ

@Keltariはたぶん、エンドユーザーは、バッチファイルは無効となりますので、ファイル名を変更します
ケビン・ドン

1
「あなたは愚かな修正ができません」-ロン・ホワイト
Keltari

1
@Keltariは、私はちょうど私のバッチファイルは私のエンドユーザーは、バッチファイル名を変更した場合でも有効でほしい
ケビン・ドン

1
また、一般的にバッチファイルを再起動する場合は、先頭に:beginのようなラベルを付け、goto begin
barlop

回答:


2

%0同じディレクトリで呼び出して、バッチ自体を再度呼び出すことができます。

変数を自分で確認するための小さなバッチファイルを次に示します。

@echo off
echo Filename exactly as called: %0
echo Driveletter:                %~d0
echo Path:                       %~p0
echo Filename:                   %~n0
echo Extension:                  %~x0
echo Complete:                   %~d0%~p0%~n0%~x0

例:

echo The following will cause this to loop until Ctrl+C is pressed:
%0

または:

echo The following will cause this to loop until Ctrl+C is pressed:
%~d0%~p0%~n0%~x0

すごい、強力な内部コマンド、THX!
ケビン・ドン

1
少し編集しました。%0いつも素晴らしい作品が、%CD%私は提案は、現在のディレクトリではなく、バッチ自体のディレクトリのためでした。%d0はドライブレターであり%p0、バッチへのパスです。しかし、あなたはアイデアを得る。これはすべて、バッチ自体で実行可能です。ここでこれらのグッズをもっと見つけることができます。
リック

(1)  %~f0は同等であるようで%~d0%~p0%~n0%~x0あり、明らかにはるかに短いです。(2)  %0バッチファイルがを実行すると、ソリューションが失敗する場合がありcdます。%~f0その場合、2番目のソリューション(または  )の方が適しています。
スコット

0

start "" "%~f0" または start "title of batch window" "%~f0"

バッチファイルを再起動するには:

start "" "%~f0" exit

これは、ファイル名や場所に関係なく、バッチファイル内からバッチファイルを開始します。名前または場所がバッチ操作中に変更されない限り、IEはバッチが開始されてからコードの前に:(start "" "%~f0")実行する機会がありました。

常に、これは「私のスクリプト」または空の引用符のちょうどペア「」のような単純な文字列にすることができ、タイトルを含め
、Microsoftのドキュメントによると、タイトルはオプションですが、あなたが問題を抱えていることができます選択した他のオプションに応じて、それが省略された場合。

ソース:https : //ss64.com/nt/start.html


1
これは5年前の回答と比べてどのような利点がありますか?
スコット

もう1つの答えは、答えそのものではなく、自分自身のために実用的な答えを構築するための知識をユーザーに与えました。cmdバッチファイルを作成する比較的新しいユーザーとして、完全修飾パス名を引用符で囲むなどの単純な知識がなかったため、意図したとおりに機能するコードを作成するのに苦労しました。
ワイザード

あなたは何について話していますか?  %0そして、%~d0%~p0%~n0%~x0 されている完全な、すぐに使用できるソリューション。さて、あなたはに置き換えてささいな改善を行いました。些細な略語は、新しい答えとはみなされません。あなたが導入した大きな変更はコマンドでしたが、なぜですか?  名前を言うだけでバッチファイルを実行できます。を使用する必要はありません。%~d0%~p0%~n0%~x0%~f0startstart
スコット

名前を言うだけでバッチファイルを実行できるとは知りませんでしたが、最初の答えを理解したので、それ%0が最善の解決策であることがわかりました。
ワイザード
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.