[前の記事]« バッチ起動の際、コマンドプロンプトのウィンドウを非表示にする方法
[次の記事][NT]データファイルを一行ずつ読み込んで条件分岐処理したい »

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

▲カテゴリー「FOR .. IN ( ) DO..」索引へ
▲カテゴリー「FOR /F」索引へ
▲カテゴリー「UNIXコマンドとDOS/Windows」索引へ

Windows2000: "foreach"のように、リストから取得した各ファイルに対して複数の処理を実行したい

182) foreachを実現したい まんせる 2003/03/06(木) 14:58


まんせると申します。

早速ですが、質問させてください。
csh,perl等でのforeachに相当するものを
DOSバッチで実現できますでしょうか?

具体的には、
1、処理したいファイルの一覧をテキストに出力
---以下ループ---
2、ファイルリストから1行取得
3、取得した名前のファイルに対して処理を実行
4、3の戻り値でエラーハンドリング
---ループ終わり---

for文での実現を考えていますが、
実行はできるにしても、
エラーハンドリングの仕方が思いつかないのです…。

OSはWin2000です。
ご存知の方、ぜひご教授ください。

189) Re:foreachを実現したい Hellcat 2003/03/08(土) 21:38


>csh,perl等でのforeachに相当するものを
>DOSバッチで実現できますでしょうか?

 既にYanakenさんのRESがありますので、参考情報です。
 Win2000用のforeachコマンドはUnixライクツールにあります。

 URL
 http://www:piedey.co.jp/softs/ntuxtl.html

 新出尚之氏作成のUNIX-Like tools(ver 4.12b)を川俣晶氏がWinNTで利用するために移植作業を行っているものです。
 川俣氏は「実用性はまだありませんが」としていますが、意見やバグレポートを受けるため公開されているソフトです。動作環境はWin2000, WinXPとされています。

 私はまだforeachコマンドは使ったことがないのですが、試用されてみてはどうでしょうか。
183) foreach質問の補足です まんせる 2003/03/06(木) 15:35


foreach質問の補足です。
リストから取得したファイルに対して、
複数の処理を実行したいのです。

---以下ループ---
2、ファイルリストから1行取得
3、取得した名前のファイルに対して処理1を実行
4、3の戻り値でエラーハンドリング
5、取得した名前のファイルに対して処理2を実行
6、5の戻り値でエラーハンドリング
--ループ終わり---

for文内でコマンドが複数実行できない限り無理なのでしょうか・・・?

184) Re:foreach質問の補足です YanaKen 2003/03/07(金) 01:59


まんせるさん、こんにちは。

>リストから取得したファイルに対して、
>複数の処理を実行したいのです。

>---以下ループ---
>2、ファイルリストから1行取得
>3、取得した名前のファイルに対して処理1を実行
>4、3の戻り値でエラーハンドリング
>5、取得した名前のファイルに対して処理2を実行
>6、5の戻り値でエラーハンドリング
>--ループ終わり---

>for文内でコマンドが複数実行できない限り無理なのでしょうか・・・?

「for文内でのコマンドの複数実行」それ自体は、下記のようないくつかの手段で可能です。

(1)DOS4以降のどのバージョンでも通用する手法
 FOR %%F IN (*.TXT) DO CALL A.BAT %%F
 ……つまり別にサブルーチン化したバッチファイルを作っておき、for文内からパラメータつきでそれを呼び出す形式です。

(2)NT系特有の書法-A
 NT系では、アンパサンド (&) で、単一のコマンド ライン上に複数のコマンドを記述することができます。
 たとえば、
for %%f in (*.txt) do 処理1 & 処理2 ...
 ……のように書くことで、for文内であっても、複数の処理を連続的に実行することが可能です。

(2)NT系特有の書法-B
 ( )でくくった処理は、複数の行にわたっていても1つのまとまりとして処理されます。

 上記 A と Bを応用すれば、ご質問の処理はたとえばこんなふうに書くことができると思います。

 FOR /F %%I IN (AAA.TXT) DO (
  処理1 & IF ERRORLEVEL ......
  処理2 & IF ERRORLEVEL ......
 )

BY YanaKen

[個人homepage  ]http://homepage3.nifty.com/yanaken/
[@pay窓口    ]http://pay.nifty.com/pay/servlet/pr?i=BDKQ048560
[@pay導入について]http://bbs1.nifty.com/mes/cf_wrent/FPCU_B0
 
 


カテゴリー「FOR .. IN ( ) DO..」索引へ
カテゴリー「FOR /F」索引へ
カテゴリー「UNIXコマンドとDOS/Windows」索引へ

 

カテゴリー一覧

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


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

資料書籍

About

2003年03月06日 14:35に投稿されたエントリーのページです。

ひとつ前の投稿は「バッチ起動の際、コマンドプロンプトのウィンドウを非表示にする方法」です。

次の投稿は「[NT]データファイルを一行ずつ読み込んで条件分岐処理したい」です。

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

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