勝手にしやがれ Part2.

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

84 / 163 ←次へ | 前へ→

【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の要求を満たせば、大丈夫でした。ありがとうご
ざいます。また、バグ入りバグ・レポート、申し訳ありませんでした。
1,433 hits

【64】Wild(32)の挙動? 文太 2008/09/18(木) 20:10
【65】Re:Wild(32)の挙動? 文太 2008/09/18(木) 22:16
【67】Re:Wild(32)の挙動? Si 2008/09/19(金) 1:12
【68】Re:Wild(32)の挙動? 文太 2008/09/19(金) 2:09
【70】Re:Wild(32)の挙動? 文太 2008/09/19(金) 12:30
【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

84 / 163 ←次へ | 前へ→
ページ:  ┃  記事番号:
14,033
(SS)C-BOARD v3.8 is Free