2016-06-24 4 views
-2

私は小さなスクリプトを作っていますが、私は頭の傷に達しました バッチファイルは、すべてのドライブでexample.exeまたはフォルダ名を探し、その中にcdしてその中にtxtファイルを作成しますか?それも可能です:P?バッチcmdでdir(ファイル/ s/p)の後に自動的にディレクトリを変更する方法は?

cd /d D: 
dir example.exe /s /p 
lets say its found and the dir is D:/Example.exe 
so i want the batch to do this, 
if example.exe is found cd to it directory then 
REM. >> "D:/logs.txt 

は可能ですか? -

私はバッチファイルが自動的に@Stephan最高の作業の答え

@echo off 
setlocal enabledelayedexpansion 
for /f "delims=:" %%a in ('wmic logicaldisk where "size>0" get caption^|find ":"') do (
    for /f "delims=" %%A in ('dir /s /b %%a:\example.exe 2^>nul') do (
    ECHO break>"%%~dpAtest.txt" 
) 
) 
+0

...何ですか?もっと説明して? – TessellatingHeckler

+1

4つのステップがあります。1)ファイルを検索します。 2)そのディレクトリに移動します。 3)テキストファイルを作成します。 4)他のすべてのドライブで上記の手順を繰り返します。まず、バッチファイルを使用してすべてのフォルダ内の特定のファイルを検索する方法を検索します(これを行う方法を示す既存の質問があります)。その後、作業があるときは、ステップ2を追加し、それを元に戻してください(このサイトで以前の回答を検索してください)。その後、#3の追加について心配することができます。そして、あなたはステップ4で作業することができます。しかし、まず何か**自分自身でそれを理解しようとする - 私たちはコード作成サービスではありません。 –

+0

なぜ私の記事をダウンさせるのですか?真剣に? @KenWhiteヒントを教えていただきありがとうございます。私はそれに取り組んでいただきありがとうございます。 – 999indTrap

答えて

0

更新答えで見つかったファイルのディレクトリに

@echo on 
cd /d D: 
dir example.exe /s /p if exist (whether its in D:/Folder/folder or D:/Folder go to directory) 
echo >test.txt 
pause 

最後にソリューションを切り替えるための「存在する場合」の後に入れてくださいこのアップデート後にご質問をいただきましたので、

見つけたすべてのファイルを処理するために:

FOR /F "delims=#" %%f IN ('dir example.exe /s /b ') DO ( 
    echo example.exe was found at path %%~pf 
) 

今、あなたはECHOステートメントを変更することができます

ECHO some text > C:\logs.txt 

あなたの代わりに置き換えるのファイルに追加したい場合は、2つのブラケットを使用する必要があります。

ECHO some text >> C:\logs.txt 

あなたが入力することができますパス後>あなたは前にCDにする必要はありません。

ます。また、CD用の変数を使用することができます

cd %%~pf 

あなたは%% fのいくつかの他の部分をしたい場合、あなたはコマンドラインでFOR /?をするか、または出力をキャッチするためにthe reference

+0

http://stackoverflow.com/a/4340395/4609258を参照して、私が書いたもので" rem file exists " –

+0

パスを入力する必要はありません。 @echo on cd/d D: dir example.exe/s/pが存在する場合は、D:/ Folderにあるかどうかを確認してください。 /フォルダまたはD:/フォルダはディレクトリに移動します) echo> test.txt 一時停止 – 999indTrap

+0

質問がありません –

0

を見ることができますコマンドの場合、forを使用します。
dir /pここでは意味がありません(出力が画面よりも長い場合は一時停止します)。 /b(裸のフォーマット、ファイル名が/ drive/path/filenameの場合、/sと使用する場合)が必要です。
%%~dpAは、d rive:¥p ath \ onlyです。
break>filename空のファイル(REM.でも動作しますが、私はbreakを好む)

@echo off 
setlocal enabledelayedexpansion 
for /f "delims=:" %%a in ('wmic logicaldisk where "size>0" get caption^|find ":"') do (
    for /f "delims=" %%A in ('dir /s /b %%a:\example.exe 2^>nul') do (
    ECHO break>"%%~dpAtest.txt" 
) 
) 

を作成するために、これはexample.exeがあるすべての利用可能なドライブ内のすべてのフォルダに空のtest.txtを置きます。 test.txtが既に存在する場合は、空のファイルによって上書きされます。

注:これは、セキュリティ上の理由から、画面にbreakコマンドをエコーし​​ます。出力が必要な場合はECHOを削除してください。

+0

本当にありがとうございましたが、D:\ Folder \ Example.exeにないファイルをD:/ に入れてありがとうございました – 999indTrap

+0

は ' example.exe'ファイルまたはフォルダ? – Stephan

+0

そのファイルd:/Folder/example.exe ファイルが見つかったときに、私は何も入力せずに(ファイル)同じディレクトリを自動的に自動的に作成するようにバッチしたいと思います。 すべての回答と私が行ったことはD:/ – 999indTrap

関連する問題