2017-01-04 6 views
0

私がしたいのは、.NAを含むサブフォルダをディレクトリで検索することです。限り、何もしない.NAのフォルダがあるとしてバッチファイル - テキストを含むフォルダを検索し、見つからない場合は続行します。

Example 
Folder1 
Folder2 
Folder3.NA 

.NAのフォルダがなくなると、別のフォルダにあるファイルを削除します。

このコードが実行されるたびに、ファイルの削除を実行するために、:NotFoundセクションにアクセスすることはありません。
誰かが私が考えているものとは異なる解決策を持っているのかもしれません。ここで

は私のコードである - これは起動時に実行されます:

@echo off 
setlocal enabledelayedexpansion 

Set Source=C:\Temp\Users 

FOR /d %%a in ("%Source%\*.NA") DO (
    IF NOT !ErrorLevel! == 0 GOTO NotFound 
    IF !ErrorLevel! == 0 GOTO Found REM - There is still a user folder with .NA 
) 
Goto EOF 

:Found 
@echo There is a folder with .NA Do Nothing 

Goto EOF 

:NotFound 
@echo Simulate delete start-up file 

Goto EOF 

:EOF 
PAUSE 
+0

(私は 'for'はそれに触れません)の' ErrorLevel'をチェックするものは何もありません。あなたの 'for/D'ループの代わりに' 'FLAG = found ''をセットするだけで ''%s' 'の '' FLAG = "&後で...フォルダ*が '.NA' *で終わっているかどうかをチェックしたいのですが? – aschipfl

+0

ワイルドカード付きの/ dは、見つかった場合に一致するフォルダを返しますので、doの後ろにあるgoto:を入れてください。 forからのエラーレベルはありません。見つからない場合は、次のステートメントでフローが続行されます。不必要なカッコに続いて、EOFを削除します。 – LotPings

+1

良いアイデア、@LotPings、気づいていたはずです... 'goto:EOF'を' goto:NotFound'で置き換える必要があります。 – aschipfl

答えて

1

コードにaschipflさんと私の提案を配置するには:

@echo off 
setlocal enabledelayedexpansion 
Set Source=C:\Temp\Users 
FOR /d %%a in ("%Source%\*.NA") DO Goto :Found 
::fall through with no find 
@echo Simulate delete start-up file 
Goto :End 

:Found 
@echo There is a folder with .NA Do Nothing 

:End 
PAUSE 

あなたは一時停止コマンドを使用して、自身の出口点が必要な場合これはeofとは呼ばず、内部の自動ラベルです。

関連する問題