[前の記事]« バッチで実行するSQLファイルにパラメタを与える方法
[次の記事]環境変数文字列の長さを調べる方法は? »

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

▲カテゴリー「FOR .. IN ( ) DO..」索引へ
▲カテゴリー「アーカイバ(ファイル圧縮・書庫化・復元・解凍…)」索引へ

FORのループ内で個々のファイルの圧縮処理ごとにLHA32.DLLの戻り値を検査したい


457) FORからのLHAの戻り値について ぽこぽん 2003/07/23(水) 20:23


どうもはじめまして。

環境:WinNT Server4.0 SP6

現在、FORにて対象ディレクトリィのファイルを存在するすべて(*.*)をLHA32.exeに渡して1づつ圧縮しています。(UNLHA32.DLL使用)
で、ここで圧縮で何らかのエラーが出たときにエラーコードを拾って
処理をGOTOで飛ばしたいのです。
単純にFORを使わずにLHA32からの1づつ圧縮を実行すれば、エラーレベルで拾えるのですが、FORからのLOOPだとすべての処理が終了後に一応エラーレベルが拾えるのですが、これだと途中でエラーが発生した場合にそこで処理を止めてGOTOで次の処理に飛ばすことができません。
(もしかすると何らかの方法があるのかもしれませんが・・・)

最悪、ファイル1づつ、
LHA32 a hoge1.lzh c:\hoge1.dat
LHA32 a hoge2.lzh c:\hoge2.dat
LHA32 a hoge3.lzh c:\hoge3.dat
  ・
  ・
  ・
という風にしなければならないのでしょうか?
こような書き方はなんか、納得できないのですが・・・

どなたか、お知恵をお貸しください。
よろしくお願いします。

ちなみにLHA32.exe UNLHA32.DLL以外の使用は業務上禁止されています。とほほ。


458) Re:FORからのLHAの戻り値について じゃく 2003/07/24(木) 10:14

http://homepage1.nifty.com/jak/batch/

>環境:WinNT Server4.0 SP6

>現在、FORにて対象ディレクトリィのファイルを存在するすべて(*.*)をLHA32.exeに渡して1づつ圧縮しています。(UNLHA32.DLL使用)
>で、ここで圧縮で何らかのエラーが出たときにエラーコードを拾って
>処理をGOTOで飛ばしたいのです。

以下のサンプルのように、for文とcall文を組み合わせて、
LHA32 の呼び出し部分をサブルーチン化すればいいと思います。
call /? のヘルプもご参照下さい。


--------------------------------------------
@echo off
for %%f in ( *.dat ) do call :sub %%f

goto end

:sub
LHA32 a %~n1.lzh %1
if ERRORLEVEL 1 goto err
goto :EOF
:err

REM エラー処理を記述する場所

goto :EOF

:end



460) Re2:FORからのLHAの戻り値について )  2003/07/23(水) 20:23  2003/07/25(金) 02:00


じゃくさん、ありがとうございました。

CALL、 案外気づきませんでした。
たすかりました。
 
 


カテゴリー「FOR .. IN ( ) DO..」索引へ
カテゴリー「アーカイバ(ファイル圧縮・書庫化・復元・解凍…)」索引へ

 

カテゴリー一覧

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


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

資料書籍

About

2003年07月23日 11:30に投稿されたエントリーのページです。

ひとつ前の投稿は「バッチで実行するSQLファイルにパラメタを与える方法」です。

次の投稿は「環境変数文字列の長さを調べる方法は?」です。

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

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