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 |