114kis00022yav 1995/07/16 05:43:45 前へ 後へ 上へ

Re: お願です(;_;)

113へのコメント

とりあえず,こんな バッチを作ってみました.

svce1.bat:
rem *** 適当なセルファイルネームでsvcelを実行するバッチファイル ***

rem *** シェル変数の初期化
set _svcel=svcel
set _svcelin=zzz
set _svcelfn.awk=zzz.awk

rem *** このバッチ自身への引数の解析
:MYARGLOOP
if "%1" == "" goto ENDMYARG
if "%1" == "--help" goto USAGE
goto ENDMYARG

:USAGE
echo %0は676の適当なセルファイルネームをあたえて%_svcel%を実行するバッチです
echo %0 --help とやって起動すると,このメッセージを表示します
echo その他の引数は(%COMSPEC%が余計なことをしなければ)%_svcel%に渡されます
echo なお,その前に環境変数"SVCELOPT"の内容が%_svcel%に渡されます
echo 例: 800lineのMAGからセルを作る場合
echo %% set SVCELOPT=-s0,0,639,799
echo %% mag -l8 foo.mag
echo %% %0 -poutpath/
goto BYEBYE
:ENDMYARG

rem *** テンポラリのインダイレクトファイルをクリアする
type nul>%_svcelin%

rem *** svcelへの引数をインダイレクトファイルに設定する
rem *** /bin/sh での echo $* に相当
:ARGLOOP
if "%1" == "" goto ENDARG
echo %1>>%_svcelin%
shift
goto ARGLOOP
:ENDARG
rem *** と,書いた後に実験してわかったことですが,
rem *** command.com は "-s0,0,639,799" のような引数を
rem *** "-s0" "0" "639" "799" のように分解してくれます
rem *** (','はどこにいってしまったのでしょう?)
rem *** しょうがない(ほんとにしょうがないね)ので
rem *** svcelに渡したい引数は,環境変数"SVCELOPT"に指定しとく
rem *** ということにしときます

rem *** svcelにあたえるファイルネームの生成
if "%AWK%" == "" goto NOAWK
rem *** awkを使って適当なファイルネーム("aa"..."zz")を生成する
echo BEGIN {>%_svcelfn.awk%
echo   tbl = "abcdefghijklmnopqrstuvwxyz">>%_svcelfn.awk%
echo   len = length(tbl)>>%_svcelfn.awk%
echo   for (i = 0; i != len; i++)>>%_svcelfn.awk%
echo     for (j = 0; j != len; j++)>>%_svcelfn.awk%
echo       print substr(tbl, 1+i, 1) substr(tbl, 1+j, 1)>>%_svcelfn.awk%
echo }>>%_svcelfn.awk%
%AWK% -f %_svcelfn.awk%>>%_svcelin%
del %_svcelfn.awk%
goto ENDCEL
:NOAWK
echo aa>>%_svcelin%
echo ab>>%_svcelin%
echo ac>>%_svcelin%
dream_hunter rem *** 省略 ここから
  echo この部分はめんどくさいので省略してあります
  echo (あまりおすすめできないが)zzになるまで全部手で書くか,
  echo awkをインストールして
  echo set awk=(awkのファイルネーム) とやって環境変数を設定してね
  goto BYERM
dream_hunter rem *** 省略 ここまで
echo zz>>%_svcelin%
:ENDCEL
rem *** インダイレクトファイルの準備完了

rem *** できたインダイレクトファイルでsvcelを実行
%_svcel% %SVCELOPT% @%_svcelin%
:BYERM
del %_svcelin%
:BYEBYE
rem にせものシェル変数なので明示的に解放しないといけない
set _svcel=
set _svcelin=
set _svcelfn.awk=
--
と,まあこんなもんかなぁ?
バッチを書くのはひさしぶりで,うまいこといかないもんだ.

                                UHD98984@pcvan.or.jp
                                                yav

前へ 後へ 上へ