筑集眺餅 さん 2002年 07月 04日 05時 38分 54秒

To:youkazuはん

>child.Attributes = child.Attributes + 2'この書き方も正しいのか
>どうか・・・

はぁ、わてもよう判りまへんけど、FolderItemオブジェクトに
Attributesプロパティは無いちゅう事でっかなぁ?
Folderオブジェクトになら Attributesがおますさかいに、いっぺん、
FolderItem から、GetFolderメソッドで Folderを引っ張って来て
Attributes を いじりはったらどないだ?

それと、マニュアルみたく、

>if (f.attributes && 2) {
>  f.attributes = f.attributes + 2;

とか しはった方がよろしいでっせ。
何でも2を足しとったら、はみだすこともあるんちゃうかな?

・・・うぅ、年食うと朝が早うて・・・

youkazu さん (shuku@cronos.ocn.ne.jp) 2002年 07月 04日 00時 12分 58秒

to あいざわさん

いろいろご指摘ありがとうございます。
新たな問題が・・・・
child.Attributes = child.Attributes + 2'この書き方も正しいのかどうか・・・
やっぱりこの書き方は正しくないみたいです。「そんなメソッドもプロパティもサポートしとらんわ!」と怒られてしまいました。
childをobjと書いてもだめだし、どうやったらプロパティを変更できるでしょう?

筑集眺餅 さん 2002年 07月 03日 22時 30分 04秒

To:あいざわはん

>ゴールデンボウル...金...杯?<そりゃ競馬や
>おそまつさまでした...

すんまへん、白状しますぅ。
「やりまん」事件と読んどりました。>やまりん?



筑集眺餅 さん 2002年 07月 03日 22時 20分 03秒

To:さざなみはん

>また、一般的にCGIへ値を渡す方法の調べ方をお教えください。

はぁ、むつかし質問ですなぁ。

わての感じで書きまっけど、たいていのページはフォームをsubmitして
値を渡しとるようでんので、いっぺんページを保存して、フォームの
要素やらメソッド(たいていpost)やらアクションやらをザっと見て、
あとは適当に試行錯誤しまんなぁ。
よう考えたらWSHとは関係おまへんなぁ。
いっぺん、HTMLのフォームの線で色々調べてみはったら・・・。

すんまへんなぁ、説明しきる自信がおまへんさかいに。

筑集眺餅 さん 2002年 07月 03日 21時 37分 17秒

To:あいざわはん

>#でもあっちもこっちも英語!ぜーんぶ英語!みんなの嫌いな英語!!

 そんなこと言うたら口が曲がります。
 あれは読めへんけど、神の人の言葉だす。
 わてら日本民族は、神の人からしたら、けったいな象形文字を使ことる、
辺境の島に住む手先の器用なサルでっせ。
 WSHもWinもLinuxも みーな、神の人が作らはったそうな。
 わてらは、何も作らんのに、使わせてもろてまんねんで。

 ありがたや、ありがたや。(合掌)


あいざわ さん 2002年 07月 03日 20時 57分 48秒

ゴールデンボウル...金...杯?<そりゃ競馬や
おそまつさまでした...

筑集眺餅 さん 2002年 07月 03日 19時 54分 39秒

To:むたぐちはん

>最近疲れやすい…なぜだろう。

WCも終わったんやから、早寝早起きしはったら、
その内元気になりまっせ。たぶん。

ところで、カーンが最優秀選手に選ばれて贈られはったんが、
ゴールデン・ボール賞やそうでんなぁ。
ちょっと、日本語に訳すのに勇気が要りまんなぁ。


筑集眺餅 さん 2002年 07月 03日 19時 30分 12秒

To:youkazuはん

>実は、MacOSXとファイルイ共有をしているので、そちらがこの
>ファイルをかってに作ります。

はぁ、それなら合点がいきますわぁ。
Winやと、ファイル名は「ファイル名」+「拡張子」やから、
ピリオドで始まるなんちゅうことはOSは予定してまへんわなぁ。
WSHが対応してたら、よろしおまんなぁ。

あいざわ さん 2002年 07月 03日 18時 37分 35秒

to:さざなみさん

本人が切り上げようとしてるのに掘り返すのもどうかとは思いましたが

>cgiに関してお返事がいただけないところ
>を見るとこれだけは無理と判断いたしました。
http://www.tek-tips.com/gviewthread.cfm/lev2/4/lev3/32/pid/222/qid/255803

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=486&lngWId=-10

この辺はいかがっすかねえ。参考になれば、くらい。
#ただ「一般的にcgiに値を設定するのは...」と言われましても。

あと

><frame src="hoge2.html">
>で指定されている hoge.html や hoge2.html
>という文字列を得たいのですが、
>IE.Document.frames

↑これですがこの書き方に該当するものがあるか不明。ただマイクロソフトの
サイトで
http://msdn.microsoft.com/library/default.asp?url=/workshop/author/om/windows_frames_dialogs.asp
このページのまんなかあたり
Creating and Using Frames
と言うタイトルのところをみてくださいまし。参考になるのでは。

#でもあっちもこっちも英語!ぜーんぶ英語!みんなの嫌いな英語!!

さざなみ さん 2002年 07月 03日 15時 39分 15秒

さざなみです

cgiに関してお返事がいただけないところ
を見るとこれだけは無理と判断いたしました。

それで、つぎは、
<frame src="hoge.html">
<frame src="hoge2.html">
で指定されている hoge.html や hoge2.html
という文字列を得たいのですが、

IE.Document.frames

のあと、どう記述すればいいのかわかりません。

どなたかよろしくおねがいいたします。

あいざわ さん 2002年 07月 03日 15時 09分 52秒

to:nakasimaさん

パイプの切れる件色々試してみました。
いまだ解答は得られずといったところですが以下ご報告です。

与えられた情報を元に似たような処理をするプログラム作って
実験してみました。ただし元はC++のようですが作ったのはVBです
し、VB内ではCOMも使用していないのでこんなもんかなくらいの
最低限のものなのであしからず。
で、66−30で

> ・スクリプトの中でネットワーク資源へのアクセスかなんかでエラーが起こり
> スクリプトのプロセスが終了している
> ・そのプロセスの終了をAPが取得できずそのままReadfileを呼び出しているので
> 「パイプが終了しました」のエラーが起こる
>
>なんてことは考えられませんか

という推測をしましたがこれは起きませんでした。具体的には、呼び出す側の
スクリプトで単独で実行すればエラーになるコードを記述し、それをVB側から
呼び出しても何のエラーも起きませんでした。ただ逆にいうとエラーのあるス
クリプトでもとりあえず実行されてしまうと言えるかもしれません。
またこの意見に対して
>WindowsNT4.0では問題なく動いている事から、プログラムのバグではなく
>Windows2000のセキュリティ強化によるものと私は推測しています。
とご回答されていますが、プログラムのバグを意味していたわけではありません。
この時点ではネットワーク越しにアクセスしているものと考えていたので、
PCの環境によってはエラーが発生している可能性もあるかなと思ったものですから。
さらにスクリプト内でのエラーハンドリングは個人的には難しいと考えていること
から、一番予想されうるという意味で上記のように推測しました。

それと今気が付いたんですがスクリプト呼び出しで//Bを使用しているようですので
なおさらエラーが起きても追うことが難しいのでは?
ちなみにWindowsNT4.0では問題なく動くというのは新情報だったりしますが、
どんなユーザーの組み合わせでも動くということでよろしいのですね?
WSHレベルではないんですがNT4.0と2000ではCMD.EXEの挙動が微妙に違ったりします。

Windows2000のセキュリティ、COMに対するセキュリティいづれも無関係だとは
言いがたいところですが上記の経緯からスクリプトが一番あやしいと思ってます。
いづれにせよ現段階では情報不足ですね。もっと簡単に"ビンゴ"な解答が得られると
思ったんですが...to:nakasimaさんのほうでもう少し切り分けはできますか?
たとえばCOMで行っている処理を固定値に置き換えて処理を単純化してみるとか。

長くなっちゃいましたが参考になるとうれしいです。

nakasima さん 2002年 07月 03日 13時 10分 57秒

to:youkazuさん、あいざわさん

すみません(^^;
あいざわさんの 11時 31分 21秒 のカキコで正解ですね
(引数が逆って話)

不要なカキコをしてしまいました(しかもイコールを2つ書いてるし(笑))

nakasima さん 2002年 07月 03日 13時 03分 22秒


to:youkazuさん

これで良いのでは?

if Left(searchS,1) == "." Then

あいざわ さん 2002年 07月 03日 11時 33分 39秒

to:youkazuさん

慌てていて間違えました。

>でもこれだと先頭がピリオド、という仕様に合いませぬゆえ
>If (Mid(searchS, 1, 1) = ".")
>がよろしかろうと...
これなしです。撤回!ごめんなさい。

あいざわ さん 2002年 07月 03日 11時 31分 21秒

to:youkazu さん

とりあえず確認したところだけ。
>If (InStr(1, ".", searchS) == 1)
逆ですね。
If (InStr(1, searchS, ".") = 1)
#ちなみに==はvbsでは使いません。

でもこれだと先頭がピリオド、という仕様に合いませぬゆえ
If (Mid(searchS, 1, 1) = ".")
がよろしかろうと...

youkazu さん 2002年 07月 03日 10時 54分 19秒

to 筑集眺餅さん、あいざわさん
実は、MacOSXとファイルイ共有をしているので、そちらがこのファイルをかってに作ります。Macの環境ではピリオドで始まるファイルは非表示になるので問題ないのですが、そのフォルダをwin側で開いたときには、意味のないファイルがたくさん表示されて非常に不便なのです。そこで、そのフォルダを定期的に掃除?するようなスクリプトを考えたかったのですが・・
サンプルコードは、ちょっと自信がなかったのでお見せするのはお恥ずかしいのですが、一応書いて見ます。
どうぞよろしくお願いします。ただ、ウィンドウズでピリオドで始まるファイルイを作ることはそのままではできないようです。
--------------------------------------
'ファイルツリー出力
'
'ファイルツリーをftreeout.txtに出力します。
'最初のダイアログで、ルートにするフォルダを選びます。

Dim sLine, sRootDir, sOutFile
Set Fs = WScript.CreateObject("Scripting.FileSystemObject")
Set Shell = WScript.CreateObject("Shell.Application")

sOutFile = "ftreeout.txt"

If WScript.Arguments.Count > 0 Then
sRootDir = WScript.Arguments(0)
End If

If Fs.FolderExists(sRootDir) Then
Set oRootDir = Shell.NameSpace(sRootDir)
Else
Set oRootDir = Shell.BrowseForFolder(0, "ルートフォルダの選択", 0)
If IsEmpty(oRootDir) Then WScript.Quit
End If

Set ts = Fs.CreateTextFile(sOutFile, True)

ts.WriteLine oRootDir.Title
Search oRootDir.Items.Item 'oRootDir.Self 'Win2000の場合
ts.Close
WScript.Echo "終了"

Sub Search(obj)
Dim I
I = 1
If obj.IsFolder Then
Set oItems = obj.GetFolder.Items
For Each child In oItems
If child.IsFolder Then
tmp = "■" & child.Name
searchS = child.Name
msgbox InStr(1, ".", searchS,1)'このメッセージボックスで確認すると、戻り値がどのファイルでも「0」になります。
If (InStr(1, ".", searchS) == 1) Then'よってこの動作はうまくいかない。
child.Attributes = child.Attributes + 2'この書き方も正しいのかどうか・・・
End If
Else
tmp = child.Name
searchS = child.Name
If (InStr(1, ".", searchS) == 1) Then
child.Attributes = child.Attributes + 2
End If
End If

If I = oItems.Count Then
ts.WriteLine sLine & "┗" & tmp
sLine = sLine & " "
Else
ts.WriteLine sLine & "┣" & tmp
sLine = sLine & "┃"
I = I + 1
End If
Search child
Next
End If
If Len(sLine) > 0 Then
sLine = Left(sLine, Len(sLine) - 1)
End If
End Sub


あいざわ さん 2002年 07月 03日 06時 54分 09秒

筑集眺餅さん、お早いですねえ。

>はぁ、ところで、ピリオドで始まるファイルって、あるもんでっか?
自分で作った事はないけどありますよ。Borlandなんかでインストールする
とドキュメントのルートなんかに.jbuilder5なんてのをかってに結構作って
くれたりします。

to:youkazuさん

>InStr関数ではファイル名中のピリオドの場所を検出してくれないようなのです
InStr関数とファイル名は関係ないので何か勘違いされているのでは?
よろしければそのあたりどのようにコーディングされているのか見せていただけます?

to:nakasimaさん

ご回答を元にちょっと実験中です。今日中にまたレスします。

筑集眺餅 さん 2002年 07月 03日 06時 01分 44秒

To:youkazuはん

>動作:ルートフォルダを選択→すべてのファイル、全てのフォルダについて
>ピリオドで始まるならプロパティを非表示に変更。

はぁ、ところで、ピリオドで始まるファイルって、あるもんでっか?
カレントディレクトリやら親ディレクトリとまぎらわしいこと
おまへんか?
そんなややこし名前の付け方、やめときなはれ。

youkazu さん (shuku@cronos.ocn.ne.jp) 2002年 07月 03日 03時 02分 49秒

以前ちょっと作りかけて、そのままだいぶ放置していたのですが、一念発起作りかかったのですが、いきなり頓挫しています。
VBSで、ピリオド(.)で始まるファイルを非表示にするスクリプトを作りたいのですが、InStr関数ではファイル名中のピリオドの場所を検出してくれないようなのです。
どうすれば、先頭がピリオドであることを検出することができるでしょうか?
ちなみにこのホームページで公開されているファイル構造をテキストに書き出すプログラムを参考にさせていただいています。
突然ですが、よろしくお願いします。

動作:ルートフォルダを選択→すべてのファイル、全てのフォルダについて
ピリオドで始まるならプロパティを非表示に変更。


nakasima さん 2002年 07月 02日 17時 49分 59秒

to:あいざわさん

なんか長くなってきましたね。お手数をおかけして申し訳ありません(^^;

>スクリプトとAPはどのように配備され実行されるのでしょうか?
>1.両方ともひとつのPCにインストールされ、各ユーザーはネットワークから呼び出す
>2.両方とも各PCにインストールされ各ユーザーはローカルで呼び出す
>3.その他
2です。
説明不足で申し訳ありません。ネットワークの方でとかユーザの方でとかは
ユーザIDの話です。インストールは、ローカルマシンにドメインのユーザで
ログオンして行ったという事です。
エラーになる/ならないも、ローカルマシンにドメインユーザでログオンして
実行した際とローカルユーザでログインして実行した際の話です。
ちなみに、ローカルユーザでログインしてインストールした場合、
ローカルユーザで実行した場合はOKですが、ドメインユーザだとエラーになりました。

>APがReadFileでWSHにアクセスしているということでいいんですよね。
はい。以下は、そのロジック例です。
 // パラメータ長の送信
 WriteFile(m_hStdIn, usHead, 8, &dwIoSize, NULL);
 // スクリプトへパラメータを送信
 WriteFile(m_hStdIn, pchIn, uiParaSize*2, &dwIoSize, NULL);
 を行った後で、
 // スクリプトでの処理結果の長さを取得
 ReadFile(m_hStdOut, usHead, 8, &dwIoSize, NULL);
 // スクリプトでの処理結果の取得
 ReadFile(m_hStdOut, szData, dwIoSize, &dwIoSize, NULL);

>・スクリプトの中でネットワーク資源へのアクセスかなんかでエラーが起こり
> スクリプトのプロセスが終了している
>・そのプロセスの終了をAPが取得できずそのままReadfileを呼び出しているので
> 「パイプが終了しました」のエラーが起こる
>なんてことは考えられませんか?
WindowsNT4.0では問題なく動いている事から、プログラムのバグではなく
Windows2000のセキュリティ強化によるものと私は推測しています。

なお、、、
今回のお答えを書く上で再度ソースを追ってみたところ、
パイプでデータのやり取りを行っているのは、APtoCOMでした。
どういう事かというと、
1.APでscriptプロセスを生成。その際に引数にパイプハンドルを渡す。
2.script内でCOMオブジェクトを生成。そのCOMのメンバ変数に
 渡されたパイプハンドルをセット。
3.scriptはCOM関数を使ってデータをやり取りする。
4.COMは、メンバ変数のパイプハンドルを使って、APとデータをやり取りする。

ひょっとしたら、COMに対するセキュリティの問題かもしれません(^^;

あいざわ さん 2002年 07月 02日 13時 49分 29秒

ご回答ありがとうございます。いまだ五里霧中ですがもう少し食い下がってみます。

>"WScript c:\temp\xxxx.wsf //Nologo //B n1 n2"
>(n1とn2は、APとscriptでデータをやり取りする為の名前なしパイプのハンドルです)
スクリプトとAPはどのように配備され実行されるのでしょうか?
1.両方ともひとつのPCにインストールされ、各ユーザーはネットワークから呼び出す
2.両方とも各PCにインストールされ各ユーザーはローカルで呼び出す
3.その他

>ツールは、ネットワークの方でインストールしました。
>で、ローカルの方ではエラーになっています。
>また、同等の権限のある別のネットワークユーザでもエラーになりました。
このように書かれているので1なのかなと思いますが...

また先の質問で
>WSHとのパイプに対するReadFile()でエラーが発生しています。
>GetLastErrorで109が帰ってきており、意味は「パイプは終了しました。」です。
と書かれているのでAPがReadFileでWSHにアクセスしているということでいいんですよね。

で、MSDNのReadFileとAnonymous Pipe Operationsの項を読んでみたんですが
以下一部引用
ReadFile
If the anonymous write pipe handle has been closed and
ReadFile attempts to read using the corresponding anonymous
read pipe handle, the function returns FALSE and GetLastError
returns ERROR_BROKEN_PIPE.

Anonymous Pipe Operations
...process has written to the pipe. The ReadFile call can also
return if all write handles to the pipe have been closed or if
an error occurs before the read operation has been completed.

とあります。なので現段階での推測なんですが、
・スクリプトの中でネットワーク資源へのアクセスかなんかでエラーが起こり
スクリプトのプロセスが終了している
・そのプロセスの終了をAPが取得できずそのままReadfileを呼び出しているので
「パイプが終了しました」のエラーが起こる
なんてことは考えられませんか?



nakasima さん 2002年 07月 02日 10時 58分 40秒

to:あいざわさん

>1)作成されたAPとは何をするものですか。
データ変換ツールです。で、このツールには「大文字to小文字」とか「後ろのスペース削除」などの
デフォルト変換機能がついているのですが、それだけだとユーザにニーズに応えるには弱いって事で、
ユーザが自由に変換機能を追加できるよう「スクリプト変換」機能を装備させました。

>2)CreatProcessを使用する理由は何でしょう?(スクリプトを起動するだけなら他にもあるように思いますので
別プロセスとして動かしたかったからだと思うのですが…
作成者でないので詳しい理由は分かりません(^^;

>3)CreatProcessの部分のコードを見せていただけますか?
fSts = CreateProcess(NULL,szCmd,NULL,NULL,TRUE,CREATE_NO_WINDOW,NULL,NULL,&si,&pi);
第2引数のszCmdには、以下のコマンドライン文字列が格納されています。
"WScript c:\temp\xxxx.wsf //Nologo //B n1 n2"
(n1とn2は、APとscriptでデータをやり取りする為の名前なしパイプのハンドルです)

>4)このAdministratorはAPを実行するマシンのローカルグループでしょうか。それともネットワーク?
ネットワークです。


>5)それとnakasimaのアカウントはローカルとネットワークのそれぞれで何になっているでしょうか?
ローカル  :Administrators、Users
ネットワーク:Administrators、Users、DomainAdmin、DomainUser、BuckupOprators、ServerOprators

ツールは、ネットワークの方でインストールしました。
で、ローカルの方ではエラーになっています。
また、同等の権限のある別のネットワークユーザでもエラーになりました。
この事から、私の考えではユーザ権限とは別の問題ではないかと推測しています。

>www.microsoft.com/windows2000/ja/professional/help/windows_security_default_settings.htm
>↑こちらの内容はご存知でしょうか。もし既知の内容でしたらごめんなさい...
知りませんでした。今から読んでみます(^^;

管理人むたぐち さん (mutaguchi@roy.hi-ho.ne.jp) 2002年 07月 02日 01時 49分 34秒
URL:http://www.roy.hi-ho.ne.jp/mutaguchi/

どうしよう…お返事溜めまくってますね。
というか、最近書き込み多いですね。満員御礼ってか。

フォルダカスタマイズも、どうにも進展無し。
えらいこっちゃ、えらいこっちゃ。

とにかく、期待せずにいろいろお待ちください。


最近疲れやすい…なぜだろう。

筑集眺餅 さん 2002年 07月 01日 22時 17分 14秒

To:ペインはん

>""を何とかして表現したいんですが・・・
>どうしたらいいでしょうか。

へ、何をどんな風に表現したはりたいんでっか?
どう答えたらええでっかなぁ?

To:neoはん

>でもカーンのプレイはほれぼれしました。

そうでんなぁ。ドイツのT2コンビはようやりましたがな。
(カーン⇒シュワちゃん、クローゼ⇒液体金属男)

でも、ブラジルの大五郎はようやった。いや、寛美2世か?

あいざわ さん 2002年 07月 01日 17時 32分 56秒

ああなんかこのログは私の一人舞台になっとる...

to:たまをさん

>流石ですね。こんなに早く、しかも全文載せて頂けるなんて。
お褒めの言葉をいただきありがとうございます。^^;
うまくいって何よりです。
個人的には何から何までやっちゃうのは相手に対して
親切ではないと思ってたりはしますが、コードを相手にすると
つい夢中になちゃうんで...

老婆心ながら付け加えると、詳細まで覚えなくともよいから
まず各オブジェクトのプロパティやメソッドをざっと目を通
しておくとよいと思います。
何かしたいと思ったときに「そういえばあんなメソッドがあっ
たなあ、じゃあこれはこーゆー風に実装できるんじゃあ...」
なんて発想につながります。

neo さん 2002年 07月 01日 17時 31分 52秒

to:あいざわさん

有難うございました。早速動作確認してみました。
ちなみにEcho文も大変参考になりました。

やっぱり他の方のソースを見るというのも大変勉強になりますね。


ペイン さん 2002年 07月 01日 17時 21分 08秒

""を何とかして表現したいんですが・・・
どうしたらいいでしょうか。

たまを さん 2002年 07月 01日 17時 20分 22秒

to:あいざわさん

ありがとうございました。
何の問題も無く動きました。(ちょっと感動してしまいました。)

本当にこの度は何から何までありがとうございました。

たまを さん 2002年 07月 01日 17時 00分 02秒

to:あいざわさん

ありがとうございます。
流石ですね。こんなに早く、しかも全文載せて頂けるなんて。
本当にありがとうございます。

早速試してみたいと思います。
この度は本当にありがとうございます。

あいざわ さん 2002年 07月 01日 16時 58分 13秒

to:shobohnさん

MkEditor用の補完くん早速使ってみました。
いーですねえこれ。
自分もこんなん作ってみたいなあ。
慣れてきたら使い心地などレスしたいと思います。

あいざわ さん 2002年 07月 01日 16時 50分 12秒

to:neoさん たまをさん

なかなか複雑になってきましたねえ。
ちょっと長いんですが結局全文載せることにしました。

Option Explicit

Dim fso, objSourceFolder

Const sSourceFolderPath = "D:\A" 'コピー元
Const sDestFolderRootPath = "D:\B\" 'コピー先

Set fso = CreateObject("Scripting.FileSystemObject")

Set objSourceFolder = fso.GetFolder(sSourceFolderPath)

ScanFolder objSourceFolder, sDestFolderRootPath

Set fso = Nothing
Set objSourceFolder = Nothing

'***** End Of Execution *****

Sub ScanFolder(objSourceFolder, sDestFolderPath)
Dim objIter, objIterFile, sFolderBody
  If Not fso.FolderExists(sDestFolderPath) Then
    fso.CreateFolder(sDestFolderPath) '新規にフォルダを作成する
    'WScript.Echo "create ", sDestFolderPath
  End If
  If objSourceFolder.SubFolders.Count > 0 Then
    For Each objIter In objSourceFolder.SubFolders
      sFolderBody = sDestFolderPath & objIter.Name & "\"
      'WScript.Echo "scan ", objIter.Path & "," & objIter.Name & "," & sFolderBody
      'サブフォルダがあれば再帰的にスキャンする
      ScanFolder objIter, sFolderBody
    Next
  Else
    '最下層のフォルダ
    For Each objIterFile In objSourceFolder.Files
      If UCase(fso.GetExtensionName(objIterFile.Name)) <> "JPG" Then
        'WScript.Echo "move ", sDestFolderPath & "," & objIterFile.Name
        'fso.MoveFile objIterFile.Path, sDestFolderPath 'このコメントを取る
      End If
    Next
  End If
End Sub

今回も一応の確認はしています。>前回のデータ残しといてよかった!
実際に実行するときは「このコメントを取る」の先頭の'取ってください。
それからEcho文もコメントとして残しておきました。
なおお分かりだと思いますがあくまでもサンプルなんでバックアップ等
取得の上自己責任で試してください。
ちなみに例によってインデントをしたいんで全角スペース入れてます。

k.sato さん (sy_u@d1.dion.ne.jp) 2002年 07月 01日 16時 44分 16秒

HTAその後

先日はHTAでの
> Set WshShell = WScript.CreateObject("WScript.Shell")を
 
Set WshShell = CreateObject("WScript.Shell")に変える方法ありがとう御座いました。おかげで完成と思いきやHTA内MAIN内「戻る」ボタンでIFREMAを戻そうとしたんですがうまくいきません。なんせwsh、hta、htmすべて世にあるサンプルを分解合成でしか勉強習得してないので簡単な抜け落ちみたいで何なんですが以下が今んところのhtaファイルの中身です

<HEAD>
<TITLE>slide App</TITLE>
<HTA:APPLICATION ID="sa"
APPLICATIONNAME="slide"
BORDER="thin"
CAPTION="yes"
ICON=""
WINDOWSTATE="maximize"
NAVIGABLE="yes"
SCROLL="no"
SYSMENU="yes"
INNERBORDER="no"
/>
<SCRIPT language="VBScript">
<!--
function wshshell()
Set WshShell = CreateObject("WScript.Shell")
Return = WshShell.Run ("../\susie.exe -s ../\test" ,3)
end function
-->
</SCRIPT>
</HEAD>
<BODY bgcolor="#000000" text="#ffffff" vlink="#999999">
<CENTER>
<FORM method="post">
<INPUT type="button" name="Button0" value="back" onclick="history.go()">
<INPUT type="button" name="Button1" value="スライド表示" onclick="wshshell()">
</FORM>
<iframe src="image.htm" NAME="image" frameborder=0 height=100% width=100% marginheight=0 marginwidth=0>
</iframe>
</div>
</BODY>

で最終的に何をしたいかと言うと画像ファイルの一覧とスライド表示なんですが画像といっしょに
CD-ROMに焼き込んで使用したいんであります。
htmだけで機能するのは完成したんですが表示画像の自動リサイズが出来ずsusieに
頼ってます。

neo さん 2002年 07月 01日 14時 53分 43秒

TO あいざわさん
なるほど。どうりで今日先週と同じ処理をしているのに
カウント数が違うわけがわかりました。

それと僕もたまをさんと同じことが気になります。
参考にさせて頂きたいので
宜しくお願いいたします。

P.S カナリアたちが優勝しましたね。
どうして僕が応援している所がことごとく負けていったのでしょう??
(ちなみにドイツが勝ってほしかった)

過去LOGをみてもらったらわかるように
セネガルもいなくなったし、、、

でもカーンのプレイはほれぼれしました。


たまを さん 2002年 07月 01日 13時 40分 01秒

あれっ、ごめんなさい
同じのが2つ載っちゃいました。

たまを さん 2002年 07月 01日 13時 38分 25秒

あいざわさん、ごめんなさい問題がありました。
問題と言うか、気が付かなかった自分が馬鹿だったんですけど・・・

各フォルダの移動させるファイルが同じ名前だったら1つしか移動できませんよね。
まったく気が付きませんでした.バカでした。

あと、抜き出したファイルがどこにあったものかも知りたいので・・・

Aのフォルダと全く同じ構造や名前をもつフォルダBを違うドライブ(またはフォルダ)に作って、jpg以外のファイルをBに移すというスクリプトを作りたいのです。

一度無い頭を振り絞って作ろうとしたのですが、同じTree構造のフォルダすら出来ません。

Aのフォルダをコピーして、Aからはjpg以外のファイルをBからはjpgだけをそれぞれ削除しようとも思ったのですが、それだと時間もかかるし一時的とはいえ容量がとっても大きくなってしまうのでなるべく避けたいのです。

どのようにしたら良いのか方法を教えてください。
お願いします。

たまを さん 2002年 07月 01日 13時 38分 19秒

あいざわさん、ごめんなさい問題がありました。
問題と言うか、気が付かなかった自分が馬鹿だったんですけど・・・

各フォルダの移動させるファイルが同じ名前だったら1つしか移動できませんよね。
まったく気が付きませんでした.バカでした。

あと、抜き出したファイルがどこにあったものかも知りたいので・・・

Aのフォルダと全く同じ構造や名前をもつフォルダBを違うドライブ(またはフォルダ)に作って、jpg以外のファイルをBに移すというスクリプトを作りたいのです。

一度無い頭を振り絞って作ろうとしたのですが、同じTree構造のフォルダすら出来ません。

Aのフォルダをコピーして、Aからはjpg以外のファイルをBからはjpgだけをそれぞれ削除しようとも思ったのですが、それだと時間もかかるし一時的とはいえ容量がとっても大きくなってしまうのでなるべく避けたいのです。

どのようにしたら良いのか方法を教えてください。
お願いします。

シャキちゃき さん 2002年 07月 01日 13時 21分 17秒

なんか、勘違いしてたみたいなのですが、
HTAをアイコン化できるっていうのは、左上のタイトルバー?のところだけなんですか?
ファイル表示じたいは、ファイルの関連付けの通りにしかならないんですか?
そうですよねー

たまを さん 2002年 07月 01日 09時 51分 28秒

あいざわさん、ありがとうございます
うまくいきました。

あいざわさんからもらったメールのを、そのままコピーしたら出来ました。
ありがとうございます。

でも、掲示板に書かれていたものとそんなに変わらないですよね。
何がいけなかったんでしょう?
謎です。

とにかく、本当にありがとうございました。
とても、助かりました。

筑集眺餅 さん 2002年 06月 30日 23時 46分 09秒

「ブ」や、「ブ」や、「ブ」やったでー!<知っとるがな。


あいざわ さん 2002年 06月 28日 18時 19分 53秒

neoさんにツッコミ...

>sampleでの”objSourceFolder.SubFolders.Count”でCountを見ていますが
>この値は、For Nextでまわしているときに徐々に減っていきますよね?
MoveFolderじゃないのでCountは減らないっす。

>MyInt = CInt(MyDouble)
CStr(MyDouble)っす。

ちゃんちゃん。

neo さん 2002年 06月 28日 17時 49分 37秒

無事うまくいきました。
昨日からの呪縛から開放されて良い週末が迎えれそうです。
さあ、いよいよ日曜日は決勝戦です。
皆さん張り切って応援しましょう!!!
(ちなみに僕は大五郎のいるチームを応援します。)

Have a nice WEEKEND!!!

にゃんこ さん 2002年 06月 28日 17時 45分 40秒

「プリンタの追加ウィザード」を表示させる方法はありますか?

たまを さん (QYF14664@nifty.ne.jp) 2002年 06月 28日 17時 31分 46秒

>なのでひょっとしてコピー先の名前の最後に\が抜けてませんか?
>私のところでも\をとるとうんともすんとも言わなくなります。
¥が抜けてました。
じゃあこれで大丈夫かなと思ってやってみたのですが、駄目でした。残念です。
neoさんはできましたか?

何が違うんでしょうか?
あいざわさんは何も問題なくいけてるわけですよね。
もしあいざわさんがよかったらメールに添付して送っていただけませんか?
それで出来るかどうか、こっちのと何が違うのか見てみたいのですが、よろしいでしょうか?

私も、掲示板で決着を着けたかったですが、よろしくお願いします。
本当にいろいろとすみません。

たまを さん 2002年 06月 28日 16時 59分 03秒

あいざわさん、ありがとうございます。
ご迷惑かけてすみません。

neoさんも色々試してもらってありがとうございます

>For EachのなかにWScript.Echo objIter.Nameとか入れてみて
>コマンドプロンプトから実行しても何も表示されませんか?
やってみました。
残念ながら何も表示されませんでした。
それに、「'for'ループを制御する変数が不正です。」というエラーまで出てきてしまいました。

あいざわさんばかりに頼ってしまい、本当に申し訳ないと思っておりますが、何卒よろしくお願いいたします。

あいざわ さん 2002年 06月 28日 16時 56分 57秒

to:neoさん,たまをさん

お手間をおかけしています。

FileSystemObjectのMoveFileメソッドの説明を見ると

>引数 source にワイルドカード文字を使用したとき、および引数
> destination がパスの区切り文字 (\) で終わるとき、引数
>destination には既存フォルダを指定したと判断され、条件に
>一致するファイルがそのフォルダ内へ移動されます。それ以外の
>ときは、引数 destination には作成するファイルの名前を指定
>したと判断されます。

のように記述されています。
なのでひょっとしてコピー先の名前の最後に\が抜けてませんか?
私のところでも\をとるとうんともすんとも言わなくなります。

neo さん 2002年 06月 28日 15時 56分 30秒

TO:あいざわさん
僕も早速試しているのですが、たまをさん同様、うまくいきません。
たまをさんと同じように半角も修正しコピー先、コピー元を変え、
実行したのですが、うんともすんとも、、、、
sampleでの”objSourceFolder.SubFolders.Count”でCountを見ていますが
この値は、For Nextでまわしているときに徐々に減っていきますよね?
うまくMoveFileされていれば、、
試しに本当にCountされているか
MsgBoxで出力しようと思ったのですが、ずーっと0でした。
ちなみに
MyDouble = objSourceFolder.SubFolders.Count
MyInt = CInt(MyDouble)
MsgBox "MyInt =" & MyInt
で表示させようとしました(まちがっているかも)。

お願いします。 教えてください。昨日から行き詰まっています。

あいざわ さん 2002年 06月 28日 15時 49分 17秒

to:たまをさん

スクリプトを見直しましたがFileSystemObjectしか使っていないので
動作環境は関係ないと思いますが。というか実行環境に依存するコードが
あったらエラーが起きるんじゃないかと。

For EachのなかにWScript.Echo objIter.Nameとか入れてみて
コマンドプロンプトから実行しても何も表示されませんか?

たまを さん 2002年 06月 28日 15時 09分 36秒

あいざわさん、早速のレスありがとうございます。

>to:たまをさん

>ひょっとして文字が正しくありませんというエラーになっていますか?
>だとしたらすみません。書きもらしましたがどうしてもインデントさせたくて
>全角のスペースを使っているところがあります。全角のスペースを半角スペースに
>変換してください。
>もしそうでないのならどういう風にうまくいかないか教えてください。
全角スペースをは半角にって言うのははじめに出てきてたので直してました。
その後で、このスクリプトを実行したらエラーもなく終わったので確認したところ何も起きてませんでした。

動作環境って言うのもあるのでしょうか?

めろん さん 2002年 06月 28日 14時 21分 10秒

筑集眺餅 さん
レスありがとうです。
ボタンクリックで、カレンダー表示って、マクロ使っていくのは、分かったんだけど、HTAにしたときに、カレンダーをどうしたらいいか、わかりません、、、
まいった、、、

あいざわ さん 2002年 06月 28日 14時 21分 06秒

to:nakasimaさん

えっと補足します。

www.microsoft.com/windows2000/ja/professional/help/windows_security_default_settings.htm
#ちなみにこれはスタート→ヘルプで「既定のセキュリティ設定」を検索した内容と同じです。

↑こちらの内容はご存知でしょうか。もし既知の内容でしたらごめんなさい...

Return