勝手にしやがれ Part2.

【投稿時の注意】
パスワード入力:必須。投稿後の削除時は同じパスワードを使います。
投稿者入力:いまのところ任意。入力を省略すると「名無しさん」がデフォルトで表示されます
Eメール入力:いまのところ任意。
リンクの入力:本文中に http の文字列が含まれると投稿出来ません。URL を貼るときは h 抜きで ttp:// とするなど工夫してみて下さい

5 / 13 ツリー ←次へ | 前へ→

【64】Wild(32)の挙動? 文太 2008/09/18(木) 20:10

【73】Re:Wild(32)の挙動? Si 2008/09/21(日) 21:46
【75】Re:Wild(32)の挙動? 文太 2008/09/22(月) 20:45
【76】Re:Wild(32)の挙動? Si 2008/09/24(水) 0:10
【77】Re:Wild(32)の挙動? 文太 2008/09/24(水) 1:04
【78】Re:Wild(32)の挙動? 文太 2008/09/24(水) 1:15
【80】Re:Wild(32)の挙動? 文太 2008/09/25(木) 0:02
【82】Re:Wild(32)の挙動? Si 2008/09/25(木) 23:55
【84】Re:Wild(32)の挙動? 文太 2008/09/28(日) 0:04
【85】Re:Wild(32)の挙動? Si 2008/09/28(日) 10:40
【88】Re:Wild(32)の挙動? 文太 2008/09/28(日) 13:31

【73】Re:Wild(32)の挙動?
 Si  - 2008/09/21(日) 21:46 -

引用なし
パスワード
   ▼文太さん:
>WILD32  EXE   16893 99-02-03  11:50    ;これには退場願いましょう m(__)m
>WILDL  EXE   16893 99-02-04  1:50    ;先ほど落としました。

タイムスタンプがちょっとアレですが、ファイルサイズからみて同じものではないかと。
version 1.34 と 1.50 は、com版、exe版と云うことではなくて、1.50 は(同じ16bitDOS版ですが) LFN対応させたものです。何故 com を exe にしたのかは忘れました ^^;

拡張子抜きで wild とタイプして実行すると comの方が優先的に起動されるので、たぶん文太さんがご自分でリネームされたのではないでしょうか?

うーん、それとも実際に2月3日に一旦公開したものの何かミスに気付いて(ファイル名に 32 を付けてしまったとか)あわてて差し替えた、と云う可能性も否定できません。9年前のことなので記憶がどこかへ行ってしまってます。

それと、68番の書き込みを見て思いついたのですが、WILD にバッチファイルを渡す、と云うのはどうでしょう?

(hoge.bat)
Ygrep -N -f mix.pat "^v\.c\./vz" %1 >> C:\MWK2\vz.log

wild hoge.bat C:\MWK\*..LOG

実際に試した訳ではないので大変恐縮ですが・・・

【75】Re:Wild(32)の挙動?
 文太  - 2008/09/22(月) 20:45 -

引用なし
パスワード
   Siさん

> それと、68番の書き込みを見て思いついたのですが、WILD にバッチファイルを
> 渡す、と云うのはどうでしょう?
> (hoge.bat)
> Ygrep -N -f mix.pat "^v\.c\./vz" %1 >> C:\MWK2\vz.log
> wild -d hoge.bat C:\MWK\*.LOG
> 実際に試した訳ではないので大変恐縮ですが・・・

 おお、完璧でした。コマンドラインに追加リダイレクションが出ないので、一
瞬、あれ、と思いましたが、バッチの【中身】がコマンドラインで展開される必
要はありませんね。ちゃんと80回、バッチを実行してくれました。パチパチパチ。
そう、あの手のバッチは機械に書いてもらいたい。(^^;

 wild のタイムスタンプ、ファイル名、すいませんでした。 LFNが使える=
32ビットとばかり思いこんでいました。LFN用のライブラリーを使用したら
com モデルに収まらなくなった、みたいなのが、exe モデルにした理由かな、と
空想・妄想しました。タイムスタンプの方は、そんなのそう安直に変えたりしな
いんだけどな、とは思っているのですが。リネームは間違いなく僕がやってます。
LFNが使えるワイルドで、wildl.exe(今回のネーミング)。


 実は、Ygrep についても発見がありました。Si さんには明らかに釈迦説なの
ですが、 grep, sed, awk はワンライナーするとき、それが複数のコマンド(ス
クリプト) だと -e "hoge" -e "foo" なんてしますし、ちょっと複雑だと -f と
スクリプトを指定するじゃないですか。だから、ま、グレップで -f はも大袈裟
だけど逃げ道はあると思っていたわけです。だから、ちょっと贅沢な(我が侭な)
不具合修正願いだと最初思ったわけです。ところが、ygrep のブロック定義を使
うと(これがおいしい!)-f hoge.pat の部分を取られてしまうので、-f 検索
パターンファイル が書けないよ、大変だよ、と半ばパニックしたわけです。こ
こまで思い至ってバッチの実験が成功したので、よかった、と本当に逃げ道はあ
ったのだと安堵したのです。

 ところがところが、バッチの実験したあと

>type pat.txt
^v\.c\./vz

>Ygrep -f mix.pat -f pat.txt object.log >result

 とやってみたら、あら! 通る! ブロックをきちんと認識したうえ検索パタ
ーンが含まれている記事を抽出してきました。ygrep、すごい! となりました。

 というわけで、逃げ道は何とおりか見つかりましたので、大変だな、と思った
らコマンドライン上での文字消え現象については覚悟して臨みますので、無理を
なさらないでくださいね。深そうでもあるし…。

 とはいえ、こんなのをワイルドに挟めたりしたら、かっちょえー、という気分
にはなれるなぁ、なんて気持ちは残ってはいますが。

>Sed -e :a -e "$!N;s/\n=/ /;ta" -e P;D file

 あ、意味は、
If a line begins with an equal sign, append it to the previous line
and replace the "=" with a single space.
です。僕が書いたのでは、もちろんありません。この書き方はsedを選びます。

                                 文太

【76】Re:Wild(32)の挙動?
 Si  - 2008/09/24(水) 0:10 -

引用なし
パスワード
   ▼文太さん:
> というわけで、逃げ道は何とおりか見つかりましたので、大変だな、と思った
>らコマンドライン上での文字消え現象については覚悟して臨みますので、無理を
>なさらないでくださいね。深そうでもあるし…。

どうもご理解ありがとうございます。取り急ぎこちらだけレスしておきます(LOGSORTW のカレンダーの件はまた後ほど)。

クオート処理の話しとはちと離れますが、コマンドプロンプトでの ^ は特殊文字だったようです。

C:\>Wild -D "Ygrep \"^foo$\" $f >>c:\kek" c:\xyz\*.*

これは、

C:\>Wild -D "Ygrep \"^^foo$\" $f >>c:\kek" c:\xyz\*.*

こうしてやることで "^foo$" となりました。^ を ^ でエスケープしてやるのです。ただし、確認したのは XP SP3 のコマンドプロンプトだけですが。

コマンドプロンプト自体は毎日のように使う機会があるのですが、使い込んでないのがバレバレでした ^^;

ただし、これが有効なのは WILD.COM だけです。

WILD.EXE の方はやはり最初と同じ結果でした。コンパイラは同じものを使っているのでコーディングに問題があるのだと思います。

いずれにしても、WILD.COM、WILD.EXE 共に MS-DOS汎用なので(おまけに WILD.EXE の LFN対応機能は Windows9x でしか利用できない)、 32bit版への移行をやらなければならないのですが、ソースを見たら DOSべったりなコーディングになっていまして、ちょこっと手直しして 32bit版コンパイラで「はいok」と云うわけにはいかないようです。

以下は余談ですが、XP のコマンドプロンプトで

C:\>^

を実行してみてください。結果は見てのお楽しみ。

【77】Re:Wild(32)の挙動?
 文太  - 2008/09/24(水) 1:04 -

引用なし
パスワード
   Siさん、

> C:\>^
> を実行してみてください。結果は見てのお楽しみ。
More?

 これはcmd.exeの特殊文字ということなんでしょうね。ワケワカ。(-o-;
 command.com窓(\system32\command.comからVzerは引っぱるのです)では、何
も起こりませんでした。複雑だなぁ。

 上以外の件は、明日あたりに。m(__)m

 wild.(com|exe) をXPな現在に ver up するのが、そう簡単ではないことは
了解です。
 それでも、wild.com で、バッチをダダダと書いてもらえるのは幸せです。m(__)m
 だって、今のところ、「^」だけですから。 すでに300回くらいは使ってい
て、不具合でていないのです。しつこいかもしれませんが、ありがとうございま
す。seder, awker には必携な wild なのです。

【78】Re:Wild(32)の挙動?
 文太  - 2008/09/24(水) 1:15 -

引用なし
パスワード
   Siさん、

ttp://it-is-it.net/CMD/%C1%B4%C8%CC/%B9%BD%CA%B8%B2%F2%C0%CF/

間違いなく「^」は特殊文字ですね。でも、クオートの中でも? エスケープ
するのに「^^」ですかぁ? こんな大きな変更は、ちゃんと伝えてもらわなけ
れば困る>MS、とかついつい言いたくなってしまいます。やれやれ、何なん
でしょうね、これは。

【80】Re:Wild(32)の挙動?
 文太  - 2008/09/25(木) 0:02 -

引用なし
パスワード
    Siさん、すいませんでした。
 頭悪いなぁ>文太

 僕はモバイル・ギアという純Dos機を持っていて、すぐに試験できたはずだ
ったのでした。どうもトンチンカンなレスをしまして申し訳ありませんでした。
 事情は複雑ではありましたが、すぐ実験してみることを思いつくべきでした。
XPの command.com の支配下にあるといっても、やはり裏では cmd.exe が監視
しています。 ですから、「^」消失の件は、cmd.exe の要求を満たすエスケープ
の仕方しかありませんでした。(C:\>^ だけだと、反応が違うのですが)

 まず、
C:\>command.com /cdir c:\bin\wild.com
WILD   COM   12396 98-06-12  1:34

C:\>command.com /cdir c:\bin\wildl.exe
WILDL  EXE   16893 99-02-04  1:50        (リネームしてあります)
 の2つが対象です。

 色んなところの色んなマシンで使うので、リネームして両方(RCP.exeとRCP32.
exeのように)HDの\binディレクトリに入れています。

 まず、wild.comから。

【@XP】
C:\>Wild.com -D "Ygrep \"^^foo$\" $f >>c:\kek" c:\xyz\*.*
<< 環境変数対応 Wildcard 展開プログラム Ver.1.34 >>
          Copyright (c) 1996-98 by namazu & Si
DEBUG MODE:Ygrep "^foo$" c:\xyz\TEST1.TXT >>c:\kek
DEBUG MODE:Ygrep "^foo$" c:\xyz\TEST2.TXT >>c:\kek

【@dos 6.2】
A:\>Wild.com -D "Ygrep \"^foo$\" $f >>a:\kek" a:\xyz\*.*
<< 環境変数対応 Wildcard 展開プログラム Ver.1.34 >>
          Copyright (c) 1996-98 by namazu & Si
DEBUG MODE:Ygrep "^foo$" c:\xyz\TEST1.TXT >>c:\kek
DEBUG MODE:Ygrep "^foo$" c:\xyz\TEST2.TXT >>c:\kek

 ★wild.comには不具合なし。

 次は、wildl.exe。と、ところが、何、これ?

【@XP】
C:\>Wildl -D "Ygrep \"^^foo$\" $f >>c:\kek" c:\xyz\*.*
アクセスが拒否されました.

 よく分からないけど、しょうがないから、Vzファイラでwild32にリネーム。
 す、すると。(もちろん同じ実行ファイルです。)

C:\>Wild32 -D "Ygrep \"^^foo$\" $f >>c:\kek" c:\xyz\*.*
cmdline = Ygrep \foo$\ C:\XYZ\TEST1.TXT >>c:\kek
cmdline = Ygrep \foo$\ C:\XYZ\TEST2.TXT >>c:\kek

 通りました。ワケワカですが、
 Siさんがおっしゃるように、まずいですね。「\」が残り「"^^」が消失。

C:\>Wild32 -D "Ygrep \"^^^^foo$\" $f >>c:\kek" c:\xyz\*.*
cmdline = Ygrep \^foo$\ C:\XYZ\TEST1.TXT >>c:\kek
cmdline = Ygrep \^foo$\ C:\XYZ\TEST2.TXT >>c:\kek

 進歩。しかし「\」が残り、「"」が消えてる。

C:\>Wild32 -D "Ygrep "^^^^foo$" $f >>c:\kek" c:\xyz\*.*
cmdline = Ygrep ^foo$ C:\XYZ\TEST1.TXT >>c:\kek
cmdline = Ygrep ^foo$ C:\XYZ\TEST2.TXT >>c:\kek

 おお、この場合は、たぶん、「"」がなくとも、ygrepは次の引数をパターンと
認識してくれそう…。でも、辛いですよね。

 では、純Dos。

【@dos 6.2】
A:\>Wildl -D "Ygrep \"^foo$\" $f >>a:\kek" a:\xyz\*.*    (wildlで通るけど、すぐ
cmdline = Ygrep \foo$\ A:\XYZ\TEST1.TXT >>a:\kek    リネームします)
cmdline = Ygrep \foo$\ A:\XYZ\TEST2.TXT >>a:\kek

 「"」の「\」によるエスケープが認識されず、「"^」が消失し、「\」が残る。

A:\>Wildl -D "Ygrep "^foo$" $f >>a:\kek" a:\xyz\*.*
cmdline = Ygrep foo$ A:\XYZ\TEST1.TXT >>a:\kek
cmdline = Ygrep foo$ A:\XYZ\TEST2.TXT >>a:\kek

 「"」が消失し、「^」も消える。「^」がcommand.comにとっての特殊文字って
ことはないですよねぇ? ま、試しに。

A:\>Wildl -D "Ygrep "^^foo$" $f >>a:\kek" a:\xyz\*.*
cmdline = Ygrep ^foo$ A:\XYZ\TEST1.TXT >>a:\kek
cmdline = Ygrep ^foo$ A:\XYZ\TEST2.TXT >>a:\kek

 おお、「^」が「^」でエスケープできた。とはいえ「\」は消失。


 というわけで、Si さんがすでにお気づきのように、wild.com にはバグがあり
ません。wild.exe には、ありそうですね。
 でも、僕は、wild.com で十分なので、cmd.exe にいじめられないように「^^」
とか「^^^^」とかやります。デバッグ・モードがあって、よかった、よかった。
m(__)m

 LFNは自分では作らないようにしていますが、それでもおつき合いしなけれ
ばならない時代です。ですので、LFN対応(NT・XP対応)の wild.exe も、
いつの日にか、宜しくお願いしますね。

 あ、ご存じかと思いますが、XPでは、SFNとLFNの関係が異常です(ま、
と言っては大袈裟かな)。そのディレクトリの状況によって、SFNのbasefilename
自体が書き換えられてしまいます。 LFNが基本になっている世界なんですね。涙。
 それでも、wild.exe については、僕は wild.com で十分に対応できますので、
まったく急いでおりません。dir コマンドと sed で、膨大な ren コマンド羅列
のバッチを書いてSFNに強引に書き換えてしまえばなんとかなりますし。そう
いうときにこそ、wild に登場してもらいたいのですけどね。

 wild.comについては、cmd.exeの要求を満たせば、大丈夫でした。ありがとうご
ざいます。また、バグ入りバグ・レポート、申し訳ありませんでした。

【82】Re:Wild(32)の挙動?
 Si  - 2008/09/25(木) 23:55 -

引用なし
パスワード
   ▼文太さん:
>アクセスが拒否されました.

これ、実はこちらでもいろいろ試しているうちに出くわしました。32bitプログラムではないとかかんとかって叱られるんですよね。原因不明ですが、色々と問題がありそうですね。すみません。

>ttp://it-is-it.net/CMD/%C1%B4%C8%CC/%B9%BD%CA%B8%B2%F2%C0%CF/

これは濃厚なサイトを紹介頂いてありがとうございました。^ の問題を調べるのに、長い年月埃をかぶっていた XPコマンドプロンプトの解説本を引っ張り出して読み返していたのですが、このサイトほど詳しくは書かれていませんでした。

> wild.comについては、cmd.exeの要求を満たせば、大丈夫でした。ありがとうご
>ざいます。また、バグ入りバグ・レポート、申し訳ありませんでした。

こちらこそ恐縮です。

それにしても、MS-DOSプロンプト、XP のコマンドプロンプト、いろいろ奥が深いですねえ。Vzのコマンドラインと云うのもありますし。Vista はまだ使ったことがないので分かりませんが、またぞろ何か変わっているのかな?

# VZのコマンドラインと云えばめざらさんとの RCP の不具合のやりとりが尻切れトンボになってしまったけど、どうしたのかしら・・・

【84】Re:Wild(32)の挙動?
 文太  - 2008/09/28(日) 0:04 -

引用なし
パスワード
   Siさん

> >アクセスが拒否されました.
>  これ、実はこちらでもいろいろ試しているうちに出くわしました。32bit プロ
> グラムではないとかかんとかって叱られるんですよね。原因不明ですが、色々と
> 問題がありそうですね。すみません。

 え、 ということはwild.exe のほうに問題があるとお考えなのですか? 僕は
cmd.exeのバグだとばかり…。このメッセージはcmd.exeが出しているのですよね?
 わかんにゃい。(/_;)

> >ttp://it-is-it.net/CMD/%C1%B4%C8%CC/%B9%BD%CA%B8%B2%F2%C0%CF/
>  これは濃厚なサイトを紹介頂いてありがとうございました。

 すごいですよね。しょうがないから少し真剣にこのあたりともつき合うか、と
思っている今日この頃なのです。


> > wild.comについては、cmd.exeの要求を満たせば、大丈夫でした。ありがとうご
> >ざいます。また、バグ入りバグ・レポート、申し訳ありませんでした。
> こちらこそ恐縮です。

 いえいえ。照れちゃうし、照れられちゃうかもしれないのですが、wildのある
世界に生まれてこれて幸せです。あれ、ほんと、すごいですよ。作者様に多謝。m(__)m

>  それにしても、 MS-DOSプロンプト、XP のコマンドプロンプト、いろいろ奥が
> 深いですねえ。 Vzのコマンドラインと云うのもありますし。Vista はまだ使っ
> たことがないので分かりませんが、またぞろ何か変わっているのかな?

 深いですねぇ。 コマンドライン・ツールを調べているとすぐ「command.comの
バグっぽい仕様」とか「cmd.exeの不思議」みたいのにすぐ出くわします。
 アメリカのsederには、
ttp://www.jpsoft.com/
 なんてのを紹介されたり…。

 今のところ、Vistaでは、「command.comはあるけど16ビットでは日本語が通ら
ない」といった辺りでしょうか。Vzerは、XPが最後のOSと考えている模様で
す…。

>  # VZのコマンドラインと云えばめざらさんとの RCP の不具合のやりとりが尻切れ
> トンボになってしまったけど、どうしたのかしら・・・

 僕もつい先日気がつきました。でも、これネットワーク・ドライブ関係なんで
すよね(分からない2)。それでももし僕にできる実験があったら、どうぞ遠慮
なく言ってみてください。

【85】Re:Wild(32)の挙動?
 Si  - 2008/09/28(日) 10:40 -

引用なし
パスワード
   ▼文太さん:
> え、 ということはwild.exe のほうに問題があるとお考えなのですか? 僕は
>cmd.exeのバグだとばかり…。このメッセージはcmd.exeが出しているのですよね?

文太さんが
ttp://dmz.xrea.jp/dahlia/bbs/cb/c-board.cgi?cmd=one;no=80;id=0001
こちらで試されたのと同じように、コマンドラインの動作をいろいろ実行している内に遭遇したものなのですが、コマンドプロンプトを開いて wild.com、wild.exe 交互にいろいろやっていたので wild.exe(だけ)の不具合とは断定できないです。

正確には「有効なWin32アプリケーションではありません」と云うメッセージも出ていました。そりゃたしかに wild.comにしても wild.exeにしても 16bitプログラムなのでこのメッセージ自体は間違っていない訳なのですが・・・

> アメリカのsederには、
>ttp://www.jpsoft.com/
> なんてのを紹介されたり…。

ちょっと覗かせて頂きましたが、日本語さえ不自由な自分には、さっぱり

わかんにゃい。(/_;) ((c)文太)

でした ^^;

> 今のところ、Vistaでは、「command.comはあるけど16ビットでは日本語が通ら
>ない」といった辺りでしょうか。Vzerは、XPが最後のOSと考えている模様で
>す…。

Vista にも command.com があると云うのにはビックリしました。が、日本語が使えないとは更にビックリです。何なんでしょうね。

> 僕もつい先日気がつきました。でも、これネットワーク・ドライブ関係なんで
>すよね(分からない2)。それでももし僕にできる実験があったら、どうぞ遠慮
>なく言ってみてください。

お気遣いありがとうございます。自分の対応が悪かったのかも知れませんし、不具合に呆れて RCP から離れてしまったのかも知れませんし ^^;
まったく同じ動作環境を作れないので何とも・・・

ただ、ここでコマンドプロンプトがらみの問題が話題に出てきたので、そこら辺の影響も関係しているのかな?と気になった次第です。

【88】Re:Wild(32)の挙動?
 文太  - 2008/09/28(日) 13:31 -

引用なし
パスワード
   Siさん

> wild.exe(だけ)の不具合とは断定できないです。
>  正確には「有効な Win32 アプリケーションではありません」と云うメッセー
> ジも出ていました。

 うーん、でも16ビットアプリはばんばん普通に使っているのですけどね、僕
なんか。wild.com はここ2週間で30回くらいは起動してますが、cmd に意地
悪された(?)以外は−−はいはい、仕様なのね−−、まったく健康でした。
 じっさいのところ「アクセスが…」って、初めて見ました。リネームしただけ
で直ったり…???

>ttp://www.jpsoft.com/
> ちょっと覗かせて頂きましたが、日本語さえ不自由な自分には、さっぱり
> わかんにゃい。(/_;) ((c)文太)
> でした ^^;

 気にしないでください。 ほら、sed とか awk とかって日常的に使う人はワン
ライナーを頻繁に使うようなのですよ。そのときシェルの動きも熟知してないと
じゃないですか。 で、UNIX ならシェル・スクリプティングと混ぜて使うところ
なんでしょうが、Windows 環境だと色々な制限があるから、ああいう大仰なのに
頼ったりすることになる、ということのようです。僕も見きわめられてないです。
 もっとも「cmd の何が特殊か」を考えようとするときには、参照できるものが
あるといいかな、と。

>  Vista にも command.com があると云うのにはビックリしました。が、日本語
> が使えないとは更にビックリです。何なんでしょうね。

 ほんと何なんでしょう?

>  自分の対応が悪かったのかも知れませんし、
> 不具合に呆れて RCP から離れてしまったのかも知れませんし ^^;

 それはありませんよ。たぶん現象がうまく再現しなかったか、Siさんのところ
で再現させられないから…、ってところではないでしょうか。

5 / 13 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
14,004
(SS)C-BOARD v3.8 is Free