2016-06-29 33 views
0

親ディレクトリから別のディレクトリのバッチファイルを呼び出す必要があります。 しかし、呼び出されるバッチファイルは親ディレクトリではなく呼び出されたディレクトリで実行する必要があります。呼び出されたディレクトリ内で実行するバッチファイルを呼び出す

C:\バッチDeleteAll.bat

DeleteAll.batは別のディレクトリ Cで別のDeleteAll.batを呼び出し、\:\バッチ\その後1 \ DeleteAll.bat

それがなければなりませんC:\ Batch \ 1内のすべてのファイルを削除してください。

どうすればいいですか?

私が試してみましたが、それはCを実行します:親ディレクトリにある1 \ DeleteAll.bat \ \バッチではなく、子ディレクトリ

===

わかりました、私はこの問題を解決するために管理フォルダ名にスペース

問題は、私は、私は、コマンドに引用符を追加する必要がありますが、問題を解決するために、子のバッチファイル

に引用符を追加しませんでした

DEL "%〜dp0 * .txt"

これをまだ読んでいるのであれば、 あなたのソリューションは機能します。

+1

[現在実行されているバッチスクリプトを含むディレクトリを取得](http://serverfault.com/questions/255291/get-directory-現在実行されているバッチスクリプトを含む)。また、[Microsoftsサイト](http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true)の詳細情報にリンクしています。 – Tone

+0

私はリンクが私の問題を解決するとは思わない。 私はディレクトリを取得する必要はありません。呼び出されたディレクトリでコマンドを実行する必要があります。 本当の例がありますか? –

答えて

2

実際の例として、

あなたがサブディレクトリにその後、あなたの親ディレクトリに

call "directory 1\DeleteAll.bat" 

を次のバッチファイルを使用している場合は、「ディレクトリ1」(子ディレクトリ)あなたはDeleteAll.bat

del "%~dp0\*.txt" 

と呼ばれる別のバッチファイルを持っています親バッチファイルは子バッチファイルを呼び出し、すべての.txtを子ディレクトリ(「ディレクトリ1」)を削除します。あなたは、バッチファイル自体を削除しようとしたくないことを覚えておいてください(私は仮定します)ので、あなたが子バッチファイルで削除しようとしているマスクを指定する必要があります。 serverfaultの答えGet directory containing the currently executed batch script

に基づいて

情報注:

何のファイルが指定されたマスク(たとえば.TXT)と一致しない場合には、メッセージを見つけることができなかった得るために正常です。バッチファイルは引き続き実行され、これらのファイルが存在する場合と存在しない場合は、このメッセージを無視できます。あなたが好む場合は、子のバッチファイル

ためHow do I prevent the “Could Not Find” error message from del *.txt?


別の構文に示すように、削除するマスクをたくさん持っている、および/またはあなたが簡素化したい場合は、メッセージを抑制することができますdelete構文では、子バッチファイルで次の構文を使用できます。その例pushdHow do I find the current directory of a batch file, and then use it for the path?

pushd "%cd%" 
cd "%~dp0" 

del 1.txt 
del 2.mpg 
del "name with spaces.mpg" 
del *.tmp 

popd 

での情報に基づいては、(あなたがから親バッチファイルを実行した場所当初は)現在のディレクトリを保存するために使用されます。 cdは、子バッチファイルを含むディレクトリに切り替えるために使用されます。popdは、保存されたディレクトリを復元します。

+0

私はちょうどあなたの例でこれとその作品をテストするが、私は自分のディレクトリで実行することができません。 私の親ディレクトリにはスペースがあると思います。 C:\ Batch File \ エラー 指定されたパスが見つかりません。 –

+0

パスを引用するだけです。私は反映するために私の答えを更新しました。 TessellatingHecklerによって投稿されたリンクは、それを行うためのよりクリーンな方法である可能性を秘めていますが、私は現時点でどのようにそれを適用するかは考えられません。 – Tone

+0

私はすでに私のパスを(あなたがそれを修正する前に)引用しましたが、それは同じエラーを与えています。 M:\バッチファイル]> [DEL M:\バッチファイル\ 1 \\ *は、mpgファイル は、システムが指定されたパスを見つけることができません... 二重のバックスラッシュは、* .MPGの前にあります。 しかし、stackoverflowはそれを削除しました。 私はビデオファイルを削除しようとしています。 –

関連する問題