[前の記事]« ログ内の特定文字列の存在をチェックして分岐処理したい
[次の記事]【未解決】「環境変数を参照してリダイレクト」がうまくいかない »

関連オンラインソフト配布サイト:
Vector>ダウンロード(top) |>MS-DOSまたは汎用 | >WindowsVista/XP/2000/NT

▲カテゴリー「FIND,FINDSTR,SORT…テキストファイル内文字列の操作」索引へ
▲カテゴリー「IF(結果の検査、条件分岐)」索引へ

FINDSTRの実行結果によって条件分岐させたい

490.
findstrのエラーレベルについて
2005年05月19日(木) 18時18分
maru
●DOS/Windowsのバージョン↓

(以下ご自由に質問文をお書きください)
Windows2000でfindstrにより行を別ファイルに抽出するバッチを作成しました。

ファイルに"で始まる行があれば別ファイルにその行を出力します。
その際、"で始まる行がなければerrorlevelが1でかえってきて失敗しましたと出力されるのですが、このパターンは正常として違う処理をさせたいです。また、別の要因でfindstrが失敗し、errorlevelが0以外でかえってきた時は失敗しましたと出力させたいのです。

この切り分け方法でいい方法があれば教えてください。



#%A%のファイル内容は\"です。

findstr /b /g:%A% %B% > %C%
if %errorlevel% NEQ 0 (
goto err2
) ELSE (
echo 成功しました。
)

:err2
echo 失敗しました。
491.
Re:findstrのエラーレベルについて
2005年05月20日(金) 01時46分
otn
>Windows2000でfindstrにより行を別ファイルに抽出するバッチを作成しました。

>ファイルに"で始まる行があれば別ファイルにその行を出力します。
>その際、"で始まる行がなければerrorlevelが1でかえってきて失敗しましたと出力されるのですが、このパターンは正常として違う処理をさせたいです。また、別の要因でfindstrが失敗し、errorlevelが0以外でかえってきた時は失敗しましたと出力させたいのです。

別の要因を事前にチェックすればよいのではないでしょうか。

>findstr /b /g:%A% %B% > %C%

だと、失敗するのは %A%が存在しないか、その内容が不正か、%B% が存在しないか、%C% に書けないか。
%A% がらみは考えないとすると、

if not exist %B% goto ERROR
for %%C in (%C%) do set AC=%~aC
if %AC:~0,1%==d goto ERROR    …ディレクトリの場合
if %AC:~1,1%==r goto ERROR    …ReadOnlyの場合

というようなことで質問意図と合ってますか?
492.
Re:findstrのエラーレベルについて
2005年05月20日(金) 02時00分
otn
>ファイルに"で始まる行があれば別ファイルにその行を出力します。

>#%A%のファイル内容は\"です。

>findstr /b /g:%A% %B% > %C%

これですが、ファイル%A%を作らなくても、

findstr /b < %B% > %C% """

で出来そうです。リダイレクトを先に書くのが重要。
493.
Re2:findstrのエラーレベルについて
2005年05月20日(金) 09時24分
maru
>>findstr /b /g:%A% %B% > %C%

>だと、失敗するのは %A%が存在しないか、その内容が不正か、%B% が存在しないか、%C% に書けないか。
>%A% がらみは考えないとすると、


findstrのエラーパターンについてあまり詳しくないので教えていただきたいのですが、エラーが発生しうるパターンは上記のものだけと考えてもよろしいのでしょうか?
496.
Re3:findstrのエラーレベルについて
2005年05月20日(金) 13時19分
otn
>>>findstr /b /g:%A% %B% > %C%
>>
>>だと、失敗するのは %A%が存在しないか、その内容が不正か、%B% が存在しないか、%C% に書けないか。
>>%A% がらみは考えないとすると、
>>

>findstrのエラーパターンについてあまり詳しくないので教えていただきたいのですが、エラーが発生しうるパターンは上記のものだけと考えてもよろしいのでしょうか?

あとは、findstr実行中にタスクマネージャーから強制終了されたとか、システムのバグでこけたとか、メモリが壊れたとか、ファイルを読み書きしているときにディスク障害でこけたとか。そういうのは事前にはチェックできませんね。

事前チェックできるもので前回もれたのは、NTFSのセキュリティ機能で権限が無くてファイルアクセスできない場合、他のプロセスが握っていてアクセスできない場合。もう漏れが無いとは言い切れませんが。

あと、findstr.exe が存在しないとか、存在するけど中身が違うとか。

%B% %C% がらみの事前チェックを一発で済ませる手段を思いつきました。
cmd /c "type %B% > %C%"
if not %ERRORLEVEL%==0 goto ERROR
場合わけで漏れがあってもこれが通れば%B% %C%がらみについては大丈夫な気がします。

もちろん、チェックした直後に他のプロセスが握る可能性は無視ですが。
507.
Re4:findstrのエラーレベルについて
2005年05月20日(金) 18時36分
maru
アドバイスありがとうございます。
方法について検討します。

>cmd /c "type %B% > %C%"
>if not %ERRORLEVEL%==0 goto ERROR

すっきりさせるためにこれだけでもいいかなと考えてます。

490.findstrのエラーレベルについて maru 05/05/19(木) 18:18
491.Re:findstrのエラーレベルについて otn 05/05/20(金) 01:46
493.Re2:findstrのエラーレベルについて maru 05/05/20(金) 09:24
496.Re3:findstrのエラーレベルについて otn 05/05/20(金) 13:19
507.Re4:findstrのエラーレベルについて maru 05/05/20(金) 18:36
492.Re:findstrのエラーレベルについて otn 05/05/20(金) 02:00
 
 


カテゴリー「FIND,FINDSTR,SORT…テキストファイル内文字列の操作」索引へ
カテゴリー「IF(結果の検査、条件分岐)」索引へ

 

カテゴリー一覧

FPCU/FPCDIY QUICK LINK online
この上の各ジャンル名をクリックすると、下のウィンドウが切り替わります▼


=リンク集のインデックスはこちら=

資料書籍

About

2005年05月19日 11:52に投稿されたエントリーのページです。

ひとつ前の投稿は「ログ内の特定文字列の存在をチェックして分岐処理したい」です。

次の投稿は「【未解決】「環境変数を参照してリダイレクト」がうまくいかない」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

This site is powered by Six Apart
Movable Type 3.33-ja
このブログについて | 運営:有限会社メディアポート