ちょっと手直し
高橋です。
>Roboさん
>そのまま使ったらなぜかエラーが出てしまいましたが、ここまで書いていただ
>けると、こんな初心者な私でも何とかなりました (^_^)
>
昼休みに検証したら、エラーがでるわでるわ…
改めて見直すと全く意味不明のコードを書いていますね。(^^;
# Subで始めたのにFunctionで閉じていたりとか…
今日、書き直しました。
変わったのは、
Set objFolder = objFSO.GetFolder(Left(strPath, intP - 1))
の後の処理です。
大分すっきりしたかと思いますが、是非お試しあれ。
# 作るだけ作ってテストは他人任せ…
# 仕事ではありえないですね。(^^;
'=====================================================================
Sub MyCreaetFolder(ByVal strPath)
On Error Resume Next
Dim objFSO
Dim objFolder
Dim intP
Dim intLen
intP = 1
intLen = Len(strPath)
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Do While intP < intLen
intP = InStr(intP, strPath, "\", vbTextCompare)
If intP = 0 Then
Exit Do
End If
Set objFolder = objFSO.GetFolder(Left(strPath, intP - 1))
If Err.Number <> 0 Then
objFSO.CreateFolder Left(strPath, intP - 1)
Else
Set objFolder = Nothing
End If
intP = intP + 1
Loop
If objFSO.FolderExists(strPath) = False Then
objFSO.CreateFolder strPath
End If
On Error GoTO 0
End Sub
'=====================================================================
ちょっと時間がないので短縮フォローで失礼します。
To: taka さん
> WSHを使って、ファイルをごみ箱に入れる方法を
> ご存知の方がいらっしゃいましたら教えて下さい。
WSHテクニック集の、右クリックメニューの実行という項目を参照してください。
具体的には削除アクションを実行します。
To: Robo さん
> '=========================================================
> Set Win=Wscript.CreateObject("Shell.Application")
> Set strFld=Win.BrowseForFolder(0,"ターゲット",VbFolderOnly)
> '==========================================================
>
> で戻ってくるのはフォルダー名のみなのですが完全なパスは帰ってこないのでしょうか?
オブジェクトの解説-Shellオブジェクトにそのやりかたを書いてます。
ありがとうございました >高橋さん
そのまま使ったらなぜかエラーが出てしまいましたが、ここまで書いていただけると、こんな初心者な私でも何とかなりました (^_^)
さてまたまた初心者な質問ですが、
'=========================================================
Set Win=Wscript.CreateObject("Shell.Application")
Set strFld=Win.BrowseForFolder(0,"ターゲット",VbFolderOnly)
'==========================================================
で戻ってくるのはフォルダー名のみなのですが完全なパスは帰ってこないのでしょうか?
確か、以前にもこのような話題が上ったかどうか ・・・・?? もし、上っていたらすみません
>takaさん
>WSHを使って、ファイルをごみ箱に入れる方法を
>ご存知の方がいらっしゃいましたら教えて下さい。
>
レスがつきませんね…
"ごみ箱"に入れるのが難しいんですよね〜。
CかVBだったら力になれるんですが、WSH Onlyの場合、
ちょっと分かりません。
識者の方のお力に期待しましょう。
>Roboさん
ごぶさたしています。
>このような構文は有効でしょうか?テストしてみると
>パスが見つかりませんのエラーでフォルダーが作れま
>せんでした
>また、このようにフォルダーを1度に作れる方法はあ
>りますか?
>
エラーが出るということは、そういう仕様なのでしょう。
で、一つの方法論ではありますが、こんな感じでどうでしょうか?
一応動作確認済ですが、5分くらいで書いたので怪しいかもしれません。
# もちろん、速度の改善、エラー処理等、追加する必要がありますが…
'=====================================================================
Call MyCreaetFolder "C:\temp\test1\test2"
Sub MyCreaetFolder(ByVal strPath)
Dim objFSO
Dim objFolder
Dim intP
Dim intLen
intP = 1
intLen = Len(strPath)
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
Do While intP < intLen
intP = InStr(intP, strPath, "\", vbTextCompare)
If intP = 0 Then
Exit Do
End If
Set objFolder = objFSO.GetFolder(Left(strPath, intP - 1))
If objFolder.IsRootFolder = False Then
If objFSO.FolderExists(Left(strPath, intP)) = False Then
objFSO.CreateFolder Left(strPath, intP - 1)
End If
End If
Set objFolder = Nothing
intP = intP + 1
Loop
If objFSO.FolderExists(strPath) = False Then
objFSO.CreateFolder strPath
End If
End Function
'=====================================================================
# よ〜するに、ルートフォルダから順番にフォルダの存在を調べて、
# 存在しなければ作っていくだけです。(^^;
# システムテスト無事終了! (^^)/
質問です
C:\temp は存在しており、c:\temp\test1はまだ存在していないとき
**********************************************************
Set FS = CreateObject("Scripting.FileSystemObject")
Fs.CreateFolder "C:\temp\test1\test2"
***********************************************************
このような構文は有効でしょうか?テストしてみると パスが見つかりませんのエラーでフォルダーが作れませんでした
また、このようにフォルダーを1度に作れる方法はありますか?
はじめまして。
WSHを使って、ファイルをごみ箱に入れる方法を
ご存知の方がいらっしゃいましたら教えて下さい。
よろしくお願いいたします。
>高橋さん
>.wsfを認識(解析・実行)させるには、WSH2.0以上が必要です。
>(WScript.Version が 5.1以上)
>M$からダウンロードしましょう。
>http://www.microsoft.com/msdownload/vbscript/scripting.asp?id=25
どうもです。早速頂きに行きます。
># システムテスト検証、今日中に終わるか!?
終わることを祈っています。
高橋@ぶらぶらしています
>Abaperさん
>NT4では、WMI動かすのに追加モジュールが必要ということで、それら
>しいもの(以下参照)をインストールしましたが拡張子wsfを認識してくれません。
>
.wsfを認識(解析・実行)させるには、WSH2.0以上が必要です。
(WScript.Version が 5.1以上)
M$からダウンロードしましょう。
http://www.microsoft.com/msdownload/vbscript/scripting.asp?id=25
# システムテスト検証、今日中に終わるか!?
初歩的なことですが・・・
NT4Serverで、W M I (Windows Management Instrumentation)が動いてくれ
ません。NT4では、WMI動かすのに追加モジュールが必要ということで、それら
しいもの(以下参照)をインストールしましたが拡張子wsfを認識してくれません。
■インストールした追加モジュール
1.WMI Core Software Installation
2.WMI SDK
■追加モジュールのあった場所(英語)
1.<http://msdn.microsoft.com/downloads/sdks/wmi/download.asp>
Win2000/WinMeでは、デフォルトでインストールされているんですね。
NT4ServerでWMI動かすのにまだ何かたりないものがあるのでしょうか?
一応、インストール後のWScript.Versionは5.0でした。
もし知っていましたら教えて下さいませ。
以上です。
お久しぶりです。SIGNAL9でございます。
>そういう状況"も"構築できる、ってことかな?
そうですね。
WindowsForm相当のものをASP.NETではWebFormと呼称していますが、
これは同じサーバソースでも、ブラウザによって(端的にはDHTMLが
使えるか使えないかで)生成されるクライアントスクリプトが異なっ
たりします。
このあたりことをbabaqさんの掲示板にちょっと書きましたので、
興味のある方はど〜ぞ。
http://www.bea.hi-ho.ne.jp/byoko/bnewslog26.html#0018
http://www.bea.hi-ho.ne.jp/byoko/bnewslog28.html#0102
To: 松島 さん
> ちなみにこちらの環境は、Win2000(SP1)+IE5.50.4522.1800(SP1) です。
私のところもまったく同じ環境なんですけど…。
なんでかな?
> ASPは、SSS(サーバサイドスクリプト)の一種で、つまり利用者から見ればCGIと同じ訳で…。
> サーバの向こう側でどんな仕掛けになっていようと、ブラウザには関係ないと思いますし。
やはりそうなんですか。
てことは、クライアント側は.NETとまったく無縁な環境でも構わないってことでしょうか。
私はてっきり、クライアントもサーバーも、.NETという共通のフレームの上に乗っかって、
情報のやり取りをするものなのかなあ、と思っていました。
そういう状況"も"構築できる、ってことかな?
それがASP.NET Webアプリケーション(サーバーが.NETな環境で、クライアントは普通のブラウザ)と
Windows Formsアプリケーション(クライアントも.NETな環境)の差異なのかな?
# うん、そう考えるとリーズナブルだ。
> サンプルを内容別に整理してリンクされてないのが、すごくもったいないです(^^;;
そこは全文検索で…。
私のところの掲示板も、状況は結構似ているかも。WMIの記事をそろそろまとめたいです(^^;
> 去年の秋〜冬は、そこのデータバインドの解説にお世話になりました(笑)。
データバインド、何気に奥が深いですよね。
# WSHからじかに呼び出すことは、やっぱり無理なのかなあ…。
そういえば、件のサイトの管理者さんが、IE周りの技術を一人で追っていくのは大変、と
おっしゃってましたよね。たしか。…わかるなあ(^^;
> 全然関係ないんですけど、LZWを使わないGIFデコーダ(Susieプラグイン)です。
> http://homepage1.nifty.com/uchi/software.htm
> LZWを使わない分重いみたいなんですけど、LZWを使わずに出来たというのがすごいです。
もともとLZWで圧縮がかかっているものを、LZWを使わずに展開するというのは、
どういう意味なのか、私にはよくわからないのですが…。
# ちょっと門外漢なもので、とんちんかんなことを言っているかも。
# よく見る問答。
# 「LZWで圧縮をかけない、無圧縮GIFなら公開しても問題ないだろう」「それっていみないじゃん」
> ブラウザからスクリプトで偽春菜に毒電波を送る仕掛けを作ってみよう!?(笑)
> サーバからCGIやらが投げるのはいくつかありますけど、ブラウザから直接、
> というのはまだ無かったような? ブラウザからtelnet開けるような仕掛けって
> ありましたっけ(^^;;
ActiveXを使えばできそうです。
というか、某タブブラウザお正月バージョンには、その仕掛けがあったらしいです。
# それにしても、偽春菜ブームって、ダウンロード支援ツール、圧縮/解凍ツール、タブブラウザ、
# CDリッパー/MP3エンコーダ/MP3プレイヤー 等々、なんかアニメのキャラがアイコンになってるような、
# ちょっとアングラっぽい用途でも使われるツール群・ちょっとアングラっぽい内容も扱っている
# Webサイトの作者・ユーザー/閲覧者を強力に連携させたという点で、歴史に残る出来事
# なんじゃないかなあ、と勝手に思ってます。
# それにしても、偽春菜の仕組みってCOMを想起させる…。ていうか、何でCOMにしなかったんだろう。
> ASPがUser-Agentとかを見て違うソースを返してくるんで、自動ダウンロードソフトが
> カンペキな形で持ってきにくいのがちょっと残念ですけど、
User-Agent偽装は? (^^;
# ってなんか問題ある気がしないでもないが…。
To: 管理人むたぐち さん
>いえいえ。いつもネタのご提供ありがとうございます。
>純粋なWSHの話題というのもそうそうないですからね(^^;
そういっていただけると、気が楽になります(^^)。
>> おや。popupオブジェクトのサイズと、そこに描いたメニューのサイズがあってませんでしたか?
>環境のせいかな?
>枠の右が二重に見えるんです。
あ、やっぱり…。
「正しいはず」の値で右側がずれていて、強制的に補正を入れたんですよ。
その「正しいはず」の部分が間違っているんだと自分のソースを疑ってます(笑)。
ちなみにこちらの環境は、Win2000(SP1)+IE5.50.4522.1800(SP1) です。
>ASPのようなサーバー側で実行されるプログラムであれば、クライアントは何でもいいわけですが、
>.NETでも同じことなんだろうか?
仕掛け的にはそうだと思います。たぶん。
ASPは、SSS(サーバサイドスクリプト)の一種で、つまり利用者から見ればCGIと同じ訳で…。
サーバの向こう側でどんな仕掛けになっていようと、ブラウザには関係ないと思いますし。
># IEのフレーム部分をそのまま利用したタブブラウザって、作れないんかなあ。
やろうと思えば、けっこうラクラクに出来そうな気がしますけど、
URLの自動補完の実現が難しいですかねぇ。
あと、window.top や TARGET="_top" の扱いが…。
># Filterに関しては、
># http://www.st.rim.or.jp/~makoto3/
># のサンプル数が凄いです。
ものすごい数ですよね。
サンプルを内容別に整理してリンクされてないのが、すごくもったいないです(^^;;
たまーに掲示板に書き込んだりしてます。
去年の秋〜冬は、そこのデータバインドの解説にお世話になりました(笑)。
>高速化はなかったはずです。
>むしろデコード処理で余計に時間がかかるのではないでしょうか。
がちょーん(笑)。
よっぽど「ソースを隠したい」といってくる企業が多かったんでしょうね(^_^;)。
>GIFというか、LZWデコードのライセンスに関しては、
全然関係ないんですけど、LZWを使わないGIFデコーダ(Susieプラグイン)です。
http://homepage1.nifty.com/uchi/software.htm
LZWを使わない分重いみたいなんですけど、LZWを使わずに出来たというのがすごいです。
感動しました。
>Becky!はIEコンポーネントを使用しなくなったんでしたっけ。
えと、設定で使うかどうかを選択できます。
使うときも、あやしげなタグ(OBJECTとか)は省かれるようになっているみたいです。
># 偽春菜…いや、なんでもないです。
ブラウザからスクリプトで偽春菜に毒電波を送る仕掛けを作ってみよう!?(笑)
サーバからCGIやらが投げるのはいくつかありますけど、ブラウザから直接、
というのはまだ無かったような? ブラウザからtelnet開けるような仕掛けって
ありましたっけ(^^;;
># なんでVBSにはbreak(Exit For)はあるのに、continueがないんだ!
これ困りますよねー。
returnとかcontinueとかbreakとか。if文のネストが減って、プログラムも
分かりやすくなって好きなんですけど。
http://msdn.microsoft.com/workshop/author/dhtml/ あたりをローカルに取り込んで、
AN HTTPDでローカルなバーチャルホストにしてみています。
ASPがUser-Agentとかを見て違うソースを返してくるんで、自動ダウンロードソフトが
カンペキな形で持ってきにくいのがちょっと残念ですけど、
便利なリファレンスに高速アクセスってのは快適ですね(笑)。
今日は、HTTP/1.1仕様書(一部)の日本語訳を見つけて、ちょっとときめいた一日でした。
(そんなものにときめくな!(笑))
http://www.st.csce.kyushu-u.ac.jp/~oka/http11/
では。
To: シロベ さん
> if (arr = s.match(/(\".+?\")|(\S+)/ig))
なーるほど。
+?を使えば
"1" 2 "3"
とかの場合、全体に一致することなく、ちゃんと"1"と"3"に一致するわけですね。
\Sは、スペースが含まれない文字列に一致するので、こういう用途に最適ですね。
後半の"を取り除く処理は、単に"を消す処理でいいと思います。
というのも、ファイル名に"はもともと使えないので…。
というわけで、私もVBS版を作ってみました。
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=x-sjis">
<title>filelist</title>
<hta:application id="HTA">
<script language="VBScript">
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
Sub window_onload()
regEx.Pattern="(?:"".+?"")|(?:\S+)"
Set Matches=regEx.Execute(HTA.commandLine)
For I=0 To Matches.Count-1
If I>0 Then
Set tr=oTable.insertRow()
Set td=tr.InsertCell
td.InnerHTML=Replace(Matches(I),Chr(34),"")
End If
Next
End Sub
</script>
</head>
<body><table id="oTable" border="1"></table></body></html>
To: 高橋 さん
> すみません、名前しかわからないです(しかもいい加減)。
一つ目が正解です。
というか、ご存知かどうか聞いただけなのに(^^;
こんな挑発的なネーミングは、どうでしょうね(^^;
# 偽春菜…いや、なんでもないです。
> # 英語圏の人がサーチエンジンでこのページに飛んできたりして…
Googleなんかは、この掲示板のログにもちゃんとヒットしますからね。
なんかWSH関係のテクニカルタームを検索すると、真っ先にここがひっかかったりする(^^;
> 1.GOTOは極力使わない。
VBS書いててGOTOしたくなる瞬間その壱:
For...Nextでループをまわすとき、ある条件で次のループへいく処理を書くとき。
Subプロシージャを併用すればできますが、なんか嫌だ。
# なんでVBSにはbreak(Exit For)はあるのに、continueがないんだ!
fubって確か…?
高橋です。
>むたぐちさん
># …fubって何の略かご存知? (笑)
fuckin uni$ys browser、
fuckin unisy$ browser
でしたっけ?
すみません、名前しかわからないです(しかもいい加減)。
fucking 〜 だったかも。
# 英語圏の人がサーチエンジンでこのページに飛んできたりして…
>VBSではそもそも行ラベルが使えないので、ときどき不便に
>感じることがありますね。
>バッチファイルからの移行組の方々には、この機能は必要
>だと思うんですが(^^;
>
私はCから入ったので、GOTO文にはものすごく抵抗がありま
した(今もですが…)。
あの頃は、
1.GOTOは極力使わない。
2.使わないとどうしようもないところは、設計を見直す
3.それでも駄目ならやむなし
という感じでしたね。
CでGOTO文を使ったことは一回もないですね。
# 例によって愚痴です。
# 人様のプログラムをメンテしたことがあるんですが、
# 全然関係ない(なさそうな)ところから、二重ループ内に
# とんできたりとか、はては関数越えのジャンプとか…
# 内緒で、全部作り直しちゃいましたけどね。
## ↑これは秘密ということで…(^^;
>ファイル名を切り分ける処理は、工夫が要ると思います。
// こんなのできました。
// s に文字列が入っているとして、
if (arr = s.match(/(\".+?\")|(\S+)/ig))
{
for (var i = 0; i < arr.length; ++i)
{
var s = arr[i];
if (s.charAt(0) == "\"" && s.charAt(s.length - 1) == "\"")
arr[i] = s.substring(1, s.length - 1);
}
}
// で arr に配列を返します。
To: TOWA さん
> 現在、インストールされているWSHのバージョンを知るにはどうしたらよいのでしょうか。
WScript.Version でわかります。
WScript.Version=5.0 …WSH1.0
WScript.Version=5.1 …WSH2.0
WScript.Version=5.6 …WSH5.6
という対応になっています。
結局BTJ32というソフトで、透過PNGにしました。
GIFは読み込めないので(まあこれも仕方ないですね…)、IrfanViewのバッチ変換を併用しました(^^;
IrfanViewは、GIFの透過色(パレット)指定はできるのに、PNGのはできないんだなあ…。
○HTAにファイルをドラッグアンドドロップする
WSH2.0では、VBSやJSなどにファイルをドロップして、そのファイル名をオプションとして
扱うことができますが、HTAにはその機能がなくて不便でした。
が、実はとても簡単な手順を踏むだけで、HTAでも同じことができるようになります。
具体的な方法は、次のregファイルを読み込ませるだけ。
# WSH2.0がインストールされていないと駄目です。当方、Win2000で確認しました。
REGEDIT4
[HKEY_CLASSES_ROOT\htafile\ShellEx\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"
これを実行すると、HTAファイルにファイルのドロップができるようになります。
HTA側から、ドロップされたファイル名を取り出すには、oHTA.commandLineを使います。
commandLineプロパティには、HTAファイル自身のパスと、そのオプションが含まれるので、
前者を取り除いてやる必要があります。その方法については、
14-02 AKiOS さん 2000/05/04 14:37 の記事を参考にしてください。
# 後述の理由により、パターンは/^"[^"]*"/のほうがいいです。
複数のファイルをドロップした場合でも、commandLineプロパティから参照することができますが、
ファイル名を切り分ける処理は、工夫が要ると思います。
というのも、基本的にスペース区切りになっているので、スペースでスプリットすれば良さそうなのですが、
スペースが含まれるファイルがあるとき、これではうまくいきません。
ただ、スペースが含まれているファイル名は、""でくくられているため、工夫次第で
何とかできるはずです。何とかしてください(^^;
私もいろいろ考えたんですが、どうもいい方法が思いつきません。
この処理は、HTAに限らず、普通のアプリで普通にされている処理だと思うので、
きっと定石のようなものがあるんでしょう。ご存知の方、情報お待ちしてます。
始めまして、新潟TOWAと言います。
初歩的な質問で恐縮です。
記事検索をやってみましたが、わからなかったので質問させてください。
現在、インストールされているWSHのバージョンを知るにはどうしたらよいのでしょうか。
具体的には、私の書いたVBSスクリプトがうまく作動しない友人のマシンにWSH2.0が入っているかどうかを確認したい、ということです。
どうも、AppActivateやSendKeysが引っかかっているようです。
IEのバージョンを聞いたり、Winのバージョンを聞いたりしているのですが、どうもうまく動かない場合があります。
初歩的な質問で恐縮です。
よろしくお願いします。
To: シロベ さん
> なお、このスクリプトをサーバ間で使ったことはないので、
> 特にファイルパスの扱いで不具合が起こる可能性があります。
スクリプトのご投稿、ありがとうございます。
FileSystemObjectは、ネットワークなパス(\\servername\sharename)に対応しているので、
特に問題は起きないと思います。
お題のスクリプトですが、いまだ未完成のLesson14でこの手のスクリプトをサンプルとして
載せようと思っていたのですが、なんかそのまま放置してしまってます(^^;
まあ、高橋さんに列挙していただいたFileオブジェクトの各プロパティと、「ディレクトリのTree構造を書き出す」
スクリプトで使った、再帰処理を組み合わせれば、それほど難しいものではありません。 > Roboさん
# 自分専用のファイル整理スクリプトでは、この手の処理はよく使うんですが(^^;
To: FreeMail さん
> エラーが出る可能性のある箇所の寸前で宣言するものなのでしょうか?
> また,エラーの出る可能性のある箇所が複数の場合は,そのたびに宣言
> するものなのでしょうか?
On Error Resume Next を宣言すると、それ以降の行がエラー処理の対象となります。
が、SubプロシージャやFunctionプロシージャ内で宣言したものは、そのプロシージャ内で
のみ有効になります。逆にメイン部分で宣言したものは、プロシージャ内では働きません。
エラー処理が有効になっているところで、On Error Goto 0 を記述すると、それ以降の
行では、エラー処理が無効になります。
To: 松島 さん
> 日増しに、私の書き込みが長くなってきてしまっているような…(^^;)。
> あんまりWSHに関係ない話題ばっかりですいません〜。
いえいえ。いつもネタのご提供ありがとうございます。
純粋なWSHの話題というのもそうそうないですからね(^^;
> おや。popupオブジェクトのサイズと、そこに描いたメニューのサイズがあってませんでしたか?
環境のせいかな?
枠の右が二重に見えるんです。
> ZDNetはいつも巡回してます(^^)。うーん、私が望む姿を書くとすれば、HTML→HTAの流れとは反対に、
> ウィンドウベースの.NETアプリケーションを、Webページを介しても利用できるブラウザ兼.NETインターフェースとか。
> 呼び方とバイナリと適用範囲が変わっただけで、今のCOMと基本的な考え方は変わらないような気がします(汗)。
.NETインターフェースとして、IEが使われるわけですか、なるほど。
そういえば、WindowsベースとWebベースのインターフェースがあるとかいう話を聞いたような気がします。
後者のインターフェースが、IEの役目になると考えればいいわけでしょうね。
他のブラウザでもいいのだろうか? そこらへんがよくわからないです。
ASPのようなサーバー側で実行されるプログラムであれば、クライアントは何でもいいわけですが、
.NETでも同じことなんだろうか?
# 違うような気がするなあ。どうも.NETの本質を理解していないもので…。
> 一時期、職場で、ブラウザのウィンドウが散らかってると隠しにくい(笑)ので、
> Cuam http://www.uranews.com/cuam/index.htm を使ってました。
> Googleバーはさすがに付かないですけど、自動補間や戻る進むあたりもバッチリだったと思います。
> 用途や好みにもよりますけど、私は合格点だと思いました。
Cuamももちろん評価済み(^^;
「進む」「戻る」ですが、一つ前、一つ後だけでなく、三つ後、四つ前とかにダイレクトに
移動できるものって、私が試したタブブラウザの中にはありませんでした。
どれかは忘れましたが、できるやつがあったのですが、ページタイトルが表示されないので
あまり意味がなかったです。
なんだかんだ言って、IEはよくできているなあ、という平凡な結論に達した次第です。
# IEのフレーム部分をそのまま利用したタブブラウザって、作れないんかなあ。
> 確かに一度、IE5の DirectX Filter に通じるような、謎の記述を見たことがあるような
> 気がします(^^;)。>ネスケの半透明化
>
> 見栄え重視派にとっては、アルファブレンディング(PNGのも)のサポートは、
> 重要なポイントですからね(^-^)。CCSに取りまとめられると嬉しいですけど。
# Filterに関しては、
# http://www.st.rim.or.jp/~makoto3/
# のサンプル数が凄いです。
> それにしても、このエンコードって、単なる暗号化なんでしょうか。それとも、若干
> 中間言語的な変換と実行時の高速化が含まれているんでしょうか。
高速化はなかったはずです。
むしろデコード処理で余計に時間がかかるのではないでしょうか。
To: 高橋 さん
> 尚、VBSのエラー処理では、VBのようにGoToをつかうことはできません。
GoTo 0 だけは使えますね。
> ErrorHandler:
VBSではそもそも行ラベルが使えないので、ときどき不便に感じることがありますね。
バッチファイルからの移行組の方々には、この機能は必要だと思うんですが(^^;
まあ、VBのヘルプにも、エラー処理以外での行ラベルの使用は推奨されてなかったので、
そういうもんなのかなあ、と思います。
VB.NETではどうなるんでしょう。
> うまくいきましたら、"ソース付き"で投稿して頂けると助かります。
> # 私も欲しくなってきました。(笑)
Lesson14のサンプルに採用してもいいですか? (笑)
> "IEのコンポーネントなどは使用せずに、独自のHTML表示エンジンを搭載"と、
> 明文してありました。
> http://www.forest.impress.co.jp/library/opera.html
>
> また、この話を聞いた相手に確認したのですが、以前はIEのコンポーネント
> を使っていたのは確かだそうです。GIFのライセンスが…という関係でIEの
> コンポーネントを使わなくなったのかな、と思っています。一時期、IEの
> コンポーネントを使用したブラウザが相次いで公開中止になったのと同じ
> かな、と。
へえ。Operaもそこからスタートしていたんですね。意外でした。
GIFというか、LZWデコードのライセンスに関しては、
http://www.forest.impress.co.jp/article/2000/03/16/lzw_license.html
なんかを見ると、IEコンポーネントの使用に関しては特に問題ない気がします。
# じゃあHTAはどうなんだ、ってこれ前にも使ったネタだ(^^;
たしかに一時期、IEコンポーネントブラウザが消えてしまったことがありましたが、
いつのまにか大量に出現しましたね。これって何でかな。
# …fubって何の略かご存知? (笑)
メーラーのHTML表示に関しても、いろいろ議論が起こりましたね。
Becky!はIEコンポーネントを使用しなくなったんでしたっけ。
Datulaは、UnisysかMicrosoftかに質問したが回答がなかったのでそのまま使用している、とか
だったと思います。
…私も早くGIFを全廃しなきゃ。
思い立ったが吉日、とばかりにPNG置換を95%まで進めました。
バナーもPNGにしましたので、GIF版をお使いの方は入れ替えてくださいませ。
どなたか透過PNGの実現方法を教えてください(^^;
お騒がせしました。<(_ _)>
高橋です。
>FrreMailさん
>エラーが出る可能性のある箇所の寸前で宣言するものなのでしょうか?
>また,エラーの出る可能性のある箇所が複数の場合は,そのたびに宣言
>するものなのでしょうか?
>教えてください。
>
On Error Resume Nextはエラー処理を有効にするように指示するステート
メントです。但し、適用範囲やアクティブ/非アクティブ状態があるため、
そのあたりを意識して書かないといけません。
(ヘルプより引用)
'=========================================================================
'On Error Resume Next ステートメントは、別のプロシージャが呼び
'出されると非アクティブとなるため、実行時にインライン エラー処
'理が必要な場合は、呼び出しルーチンごとに On Error Resume Next
'ステートメントを実行する必要があります。プロシージャが終了する
'と、エラー処理機能は、そのプロシージャを入力する前に戻ります。
'=========================================================================
On Error Resume Nextに関しては、VBSのヘルプに詳しいことが書いてある
ので、そちらを参照してみて下さい。
尚、VBSのエラー処理では、VBのようにGoToをつかうことはできません。
'=========================================================================
Sub Tashizan()
On Error GoTo ErrorHandler
(処理開始)
(中略)
(処理終了)
Exit Sub
ErrorHandler:
MsgBox "Err.Number: " & Error
(エラー処理)
End Sub
'=========================================================================
>Roboさん
>一番悩んだのは、指定した日付よりも"古い"ファイルの移動なんです
>Xcopyでは
>1.日付よりも新しいファイルしか指定できない
>2.移動が出来ない
>
xcopyを使ったバックアップをしていたもので…当然"古いファイルを移動"と
いうのも出来ると勘違いしていました。ご容赦下さい。<(_ _)>
# ファイルサーバーの掃除(整理)的な用途ですか?
シロベさんがソース付きで投稿して下さいましたし、他の言語での開発経験
があれば、WSHはかなり楽だと思います。
うまくいきましたら、"ソース付き"で投稿して頂けると助かります。
# 私も欲しくなってきました。(笑)
>むたぐちさん、松島さん (混合レス、失礼!)
>>>Opera -> レンダリングエンジンがInternet Explorerと同じ
>>IEのソースコードって、非公開、ですよね。OperaってMicrosoftが開
>>発しているんでしょうか??
>それこそ、vs司法省の「どこまでIEでどこからWindows?」という問題になる
>のでは?(笑)
>
またしても無責任な書き込みをしてしまいました。
窓の杜でOperaの記事を確認したのですが、
"IEのコンポーネントなどは使用せずに、独自のHTML表示エンジンを搭載"と、
明文してありました。
http://www.forest.impress.co.jp/library/opera.html
また、この話を聞いた相手に確認したのですが、以前はIEのコンポーネント
を使っていたのは確かだそうです。GIFのライセンスが…という関係でIEの
コンポーネントを使わなくなったのかな、と思っています。一時期、IEの
コンポーネントを使用したブラウザが相次いで公開中止になったのと同じ
かな、と。
いずれにせよ、無責任な書き込みをしてしまい、申し訳ありませんでした。<(_ _)>
# 今回も、という話もありますが…(^^;
# 決して、むしかえそうというつもりではありません。ご容赦ください…
>ソースを隠すことにメリットを感じない場合、全く意義がなくなってしまうも
>のなのか、ちょっと知っておきたくて(笑)。
>
私も、ソースを隠すことにメリットは感じないですね。
問題がある場合にソースを修正して、即実行可能というのがスクリプト言語全般
の最大の利点と考えているので…
日増しに、私の書き込みが長くなってきてしまっているような…(^^;)。
あんまりWSHに関係ない話題ばっかりですいません〜。
To: 管理人むたぐち さん
># 枠の右側がちょっと変?
おや。popupオブジェクトのサイズと、そこに描いたメニューのサイズがあってませんでしたか?
ドット単位でピッタリあわせたつもりだったんですけど、機会をみて見直してみますね。
>本物のポップアップメニューは、下位階層を開いても、上位階層の反転表示が解除されないので、
>そこも真似してみるといいかもしれませんね。
「たかが」ポップアップメニュー一つで、なんでこんなに奥が深いんだ!?
こんな便利なポップアップメニューを作るMicrosoftは罪深いですね。(笑)
■ .NET の話題
>MicrosoftはついにJavaを見限ったみたいですね。# 和解っていうか、喧嘩別れじゃないのか
結局、SUNは少なからずのパイを失って、Microsoftは悪の帝国のイメージが強くなって、開発者はさらに混迷して、
利用者はJavaに対する意識の重要度を下げる…、そんな気がします。 つまり、「勝者なし」。
ところで、和解したJavaと、iモードのJavaを、同列に意識している人って、どれくらいいるんでしょうかねぇ。
私も同列視できない一人ですが(苦笑)。
>そういえば、.NET時代におけるIEはどういう立場になるか、という内容の記事がZDNNにあったので、
>読んでみてはいかがでしょうか。
>やはり、今までのような、シェルの中核コンポーネント兼ブラウザのような存在ではなくなる…のかも。
ZDNetはいつも巡回してます(^^)。うーん、私が望む姿を書くとすれば、HTML→HTAの流れとは反対に、
ウィンドウベースの.NETアプリケーションを、Webページを介しても利用できるブラウザ兼.NETインターフェースとか。
呼び方とバイナリと適用範囲が変わっただけで、今のCOMと基本的な考え方は変わらないような気がします(汗)。
■ ブラウザ の話題
>> 私は、それがネスケの姿勢かなーと思ってます。
>でも「高機能」の意味を取り違えているような気がしないでもないです。
>もっと軽いブラウザを作れば、シェア奪回の可能性もあるのに。
現在のネットスケープ開発チームって、どういう面々なんでしょうかねぇ(苦笑)。
NN4はNN3の出来の悪すぎる焼き直しで、NN6はMozillaのベータ版そのものみたいなもんですし。
(歴代のNNのうち、最も時代に即していたのはNN3だと思います。)
>一時期いろいろ味見してみたんですが、IEの基本機能を満たすものは皆無でしたので、
>移行することはできませんでした。
一時期、職場で、ブラウザのウィンドウが散らかってると隠しにくい(笑)ので、
Cuam http://www.uranews.com/cuam/index.htm を使ってました。
Googleバーはさすがに付かないですけど、自動補間や戻る進むあたりもバッチリだったと思います。
用途や好みにもよりますけど、私は合格点だと思いました。
To: Lib30 さん、高橋 さん、管理人むたぐち さん 混合レスです(失礼^^;)
■ ブラウザ の話題
> Netscape6ではinnerHTMLがサポートされているということに最近気づきました。
> innerText、outerHTML、outerTextに未対応のところを見ると、
> N6の試験的に実装したいわば隠し機能の一つのようです
> (他に要素の半透明化など、ひそかにIEを意識した機能を色々実装しているようです)。
新ブラウザが出たときのお決まりの、「標準に対する互換性チェック」と
「他のブラウザの拡張機能の取り込みチェック」と「独自の拡張機能のチェック」。
Netscape6には、もとからあまり関心がなかったので、大してチェックしてませんでした。
確かに一度、IE5の DirectX Filter に通じるような、謎の記述を見たことがあるような
気がします(^^;)。>ネスケの半透明化
見栄え重視派にとっては、アルファブレンディング(PNGのも)のサポートは、
重要なポイントですからね(^-^)。CCSに取りまとめられると嬉しいですけど。
>そういえば、HTMLのDOMってちゃんと標準仕様が勧告されているんですね。
私はここ http://www.doraneko.org/misc/dom1/cover.html を愛用してます。
>IEのソースコードって、非公開、ですよね。OperaってMicrosoftが開発している
>んでしょうか??
それこそ、vs司法省の「どこまでIEでどこからWindows?」という問題になるのでは?(笑)
Win以外のプラットフォームでのIEを見ればいいのかもしれませんけど。
>> # telnetでサーフィンするのも良いかもしれません。
>それは凄い。
>脳内レンダリング。
うぉ、横幅80桁じゃ収まらないですね。
私も、サーバエラーの詳細やヘッダの Last-Modify が欲しいときに、たまに
telnet サーバ名 80 から、
host:サーバ名
GET パス HTTP/1.0
とか打ち込みますけど、脳内レンダリングはあんまりやりませんね。
視覚的に、「マイ・コーディング規約」と同じだったら、けっこうサクサクかもしれませんけど(笑)。
でも、逆の、デザインを見てHTML/CSSを吐き出すのはよくやりますよねー(笑)。
■ スクリプト の話題
>> エンコードされたスクリプトでも、完全ではないけれども読み取る方法があります。
>> あまりあてにしないほうが良いかも。
>まあ、IEのデコードエンジンみたいのが呼び出せれば、できそうな気はします。
>2バイト文字はエンコードできないし、まあROTくらいのものと考えておいたほうがいいかな。
逆アセンブルと同じような感覚なんでしょうか。(^^;;;
それにしても、このエンコードって、単なる暗号化なんでしょうか。それとも、若干
中間言語的な変換と実行時の高速化が含まれているんでしょうか。
ソースを隠すことにメリットを感じない場合、全く意義がなくなってしまうものなのか、
ちょっと知っておきたくて(笑)。
DNSサーバーが落ちただけで新聞記事になるというのも凄いなあ。
To: 松島 さん
> http://db.popup.org/matsushima/temp/20010124/popup.html
> ポップアップメニューのマウスの制御は、いちおう完成…かな。
おお、リアルですね。
# 枠の右側がちょっと変?
本物のポップアップメニューは、下位階層を開いても、上位階層の反転表示が解除されないので、
そこも真似してみるといいかもしれませんね。
> この頃は、Netscape6とDOM1仕様を意識して、DOMに関する部分は、なるべくIE依存の
> オブジェクトモデルを使わなくて済むようにしようとしているところですが、innerHTMLは
> なかなか捨てきれないですね(^^;)。
innerHTMLってすごく便利なのにネスケでは使えなくて、ページ作成者が頭を悩ませるんですよね(^^;
> 同じコードのソフトウェアが(快適に)動く(開発しやすい)共通のプラットフォーム
> があれば、それがOSであれブラウザであれVMであれ、何でもいいんですよね。
> Javaはニッチなものになってしまってますけど…。
MicrosoftはついにJavaを見限ったみたいですね。# 和解っていうか、喧嘩別れじゃないのか
http://www.zdnet.co.jp/news/0101/24/e_sunms.html
# ネスケのJavaVMって、起動にめちゃくちゃ時間がかかったという記憶があるなあ…。
> Microsoftは、プラットフォームとしてのブラウザをCOM化してしまったら
> 他のOSへの移植が難しくなってしまったんで、.NET で仕切りなおしをしよう、
> というカンジでしょうか。あと、ブラウザ技術ではVC++使いから舐めらる、とか(^^;)。
そういえば、.NET時代におけるIEはどういう立場になるか、という内容の記事がZDNNにあったので、
読んでみてはいかがでしょうか。
http://www.zdnet.co.jp/news/0101/12/e_ie.html
やはり、今までのような、シェルの中核コンポーネント兼ブラウザのような存在ではなくなる…のかも。
で、純粋にブラウザ機能だけに特化した(というと語弊があるな。デスクトップポータルのような
ものらしい)、MSN Explorerってのが登場するようです。
http://www.zdnet.co.jp/news/0010/26/msn.html
# でもこれって…略すとME? (略すな)
> 私は、それがネスケの姿勢かなーと思ってます。
でも「高機能」の意味を取り違えているような気がしないでもないです。
もっと軽いブラウザを作れば、シェア奪回の可能性もあるのに。
重いところはIEの真似をせんでよろしい。(って、使ってもいない私が言うことじゃないな)
> ただ、MDIである、という点だけでは、数あるIEコンポーネントを利用したMDI型/タブ型の
> ブラウザのほうがWindowsでは便利ですね(^^;;)。
一時期いろいろ味見してみたんですが、IEの基本機能を満たすものは皆無でしたので、
移行することはできませんでした。
# 履歴の検索とアドレスの自動補完と「戻る」「進む」の履歴がないと嫌だ!
# あとGoogleバーは必需品。
To: Lib30 さん
> Netscape6ではinnerHTMLがサポートされているということに最近気づきました。
> innerText、outerHTML、outerTextに未対応のところを見ると、
> N6の試験的に実装したいわば隠し機能の一つのようです
> (他に要素の半透明化など、ひそかにIEを意識した機能を色々実装しているようです)。
そうなんですか。きっとユーザーから散々要望があったんでしょう。
そういえば、HTMLのDOMってちゃんと標準仕様が勧告されているんですね。
# いまだに好き勝手拡張しているんだと思ってました(^^;
> エンコードされたスクリプトでも、完全ではないけれども読み取る方法があります。
> あまりあてにしないほうが良いかも。
え、それは知らなかったです。
まあ、IEのデコードエンジンみたいのが呼び出せれば、できそうな気はします。
2バイト文字はエンコードできないし、まあROTくらいのものと考えておいたほうがいいかな。
To: 高橋 さん
> Opera -> レンダリングエンジンがInternet Explorerと同じ
え、OperaはIEコンポーネントブラウザだったのか! (違)
IEのソースコードって、非公開、ですよね。OperaってMicrosoftが開発している
んでしょうか??
> # telnetでサーフィンするのも良いかもしれません。
それは凄い。
脳内レンダリング。
> EmEditorですか?
> 私も実は使っています(未だにVersion2ですが)。
そうです。同じくVer.2です。Ver.3は、秀丸並みの値段になっちゃいました。
> # こちらのVBS配色定義ファイルも利用させて頂いてます。
> # VBSの開発が大変楽になりました。ありがとうございます。
色がついているだけで、ずいぶん記述しやすいですよね。
デバッグが容易になるし。(キーワードのスペルミスがすぐ発見できる)
> Set xl = Wscript.CreateObject("Excel.Application")
Set xl = Wscript.CreateObject("Excel.Application.n")
(nは自然数)
とやることで、呼び出すExcelのバージョンを明示的に指定できるらしいです。
n=9がExcel2000だったかな。
これがバージョン判別の手段として使えるかもしれません。> FreeMailさん
高橋さん シロベさん ありがとうございました
一番悩んだのは、指定した日付よりも"古い"ファイルの移動なんです
Xcopyでは
1.日付よりも新しいファイルしか指定できない
2.移動が出来ない
のでだめでした
Robocopyでは "よりも古いファイル"は指定できるがコピー先のファイルとの比較してしまう、つまりコピー先にファイルがなかった場合は自動的にコピーしてしまう。
最初はそんなに難しくはなさそうだと思い始めたのですが、なかなかいいツールがなくWSHで!と決意したのはいいのですが、なんせ初心者で・・・(^^
このサイトを見つけたのがせめてもの救いです!
高橋さんありがとうございました。
エラーを取得することが出来ました。
しかし,On Error Resume Next の使い方がよく分かりません。
今までは On Error Resume Next をエラーが出る可能性のある
箇所のかなり前で宣言していたのですが,その場合はエラーを
取得することが出来ませんでした。
エラーが出る可能性のある箇所の寸前で宣言するものなのでしょうか?
また,エラーの出る可能性のある箇所が複数の場合は,そのたびに宣言
するものなのでしょうか?
教えてください。
なお、このスクリプトをサーバ間で使ったことはないので、
特にファイルパスの扱いで不具合が起こる可能性があります。
>サブディレクトリーも含め検索し、移動先も移動元と同じディレクトリーの構成
>にしたいのですが
この部分だけなら、普段私が使っているスクリプトが参考になるかと思います。
HDDのデータはデフォルトで上書きできないようにしてあるので、
プロテクト解除するには sync.ProtectHDD = false としてください。
※注意!
このスクリプトは自己責任で使用してください。
いきなり使わず、テストしてみてください。
/*****************
common.js
*****************/
//-------------------------------------------------------------------
// 同期をおこなうクラス(インスタンスバージョン)
//-------------------------------------------------------------------
var FS = new ActiveXObject("Scripting.FileSystemObject");
function Syncronize()
{
this.ConfirmDel = true; // 削除を確認する
this.ProtectHDD = true; // HDD のデータを上書きしない
}
function Syncronize.prototype.Execute( fDir, tDir ) // public
{
this.CheckParameter( fDir, tDir );
var message = "From : " + fDir + "\n"
+ "To : " + tDir + "\n"
+ "同期を行います";
if (! m_Confirm(message, "確認"))
return;
this.RecurseDelete( fDir, FS.GetFolder(tDir) );
this.RecurseCopy ( FS.GetFolder(fDir), tDir );
WScript.Echo("完了しました");
}
//-------------------------------------------------------------------
// フォルダ名をチェックする
//-------------------------------------------------------------------
function Syncronize.prototype.CheckParameter( fDir, tDir )
{
var s0 = "フォルダが存在しません";
var s1 = "コピー先は、リムーバルメディアにしてください";
var s2 = "ドライブは指定できません";
var s3 = "同じフォルダです";
var s4 = "名前が同じフォルダを指定してください";
if (! FS.FolderExists(fDir)) Quit(s0 + "\n" + fDir);
if (! FS.FolderExists(tDir)) Quit(s0 + "\n" + tDir);
var fd = FS.GetFolder(fDir);
var td = FS.GetFolder(tDir);
var tdrv = FS.GetDrive(td.Drive);
if (this.ProtectHDD && tdrv.DriveType != 1) Quit(s1);
if (fd.IsRootFolder || td.IsRootFolder) Quit(s2);
if (fd.Path == td.Path) Quit(s3);
if (fd.Name.toLowerCase() != td.Name.toLowerCase()) Quit(s4);
}
//-------------------------------------------------------------------
// 再帰的にコピー
//-------------------------------------------------------------------
function Syncronize.prototype.RecurseCopy( fDir_o, tDir )
{
for (var subfc = new Enumerator(fDir_o.SubFolders); !subfc.atEnd(); subfc.moveNext())
{
var fSubDir_o = subfc.item();
var tSubDir = tDir + "\\" + fSubDir_o.Name;
if (FS.FolderExists(tSubDir))
this.RecurseCopy(fSubDir_o, tSubDir)
else
fSubDir_o.Copy(tSubDir);
}
for (var fc = new Enumerator(fDir_o.Files); !fc.atEnd(); fc.moveNext())
{
var fFile_o = fc.item();
var tFile = tDir + "\\" + fFile_o.Name;
if (FS.FileExists(tFile))
{
var tFile_o = FS.GetFile(tFile);
// キャストしないと、オブジェクトの比較は常に偽になる(謎)
if (Number(fFile_o.DateLastModified) == Number(tFile_o.DateLastModified))
continue;
tFile_o.Attributes &= ~1; // 読みとり専用を解除
}
fFile_o.Copy(tFile, true); // 上書き
}
}
//-------------------------------------------------------------------
// 再帰的に削除
//-------------------------------------------------------------------
function Syncronize.prototype.RecurseDelete( fDir, tDir_o )
{
for (var subfc = new Enumerator(tDir_o.SubFolders); !subfc.atEnd(); subfc.moveNext())
{
var tSubDir_o = subfc.item();
var fSubDir = fDir + "\\" + tSubDir_o.Name;
if ( FS.FolderExists(fSubDir) )
this.RecurseDelete(fSubDir, tSubDir_o);
else
this.DeleteByObject(tSubDir_o);
}
for (var fc = new Enumerator(tDir_o.Files); !fc.atEnd(); fc.moveNext())
{
var tFile_o = fc.item();
var fFile = fDir + "\\" + tFile_o.Name;
if (! FS.FileExists(fFile))
this.DeleteByObject(tFile_o);
}
}
//-------------------------------------------------------------------
// 確認付きで削除
//-------------------------------------------------------------------
function Syncronize.prototype.DeleteByObject( object )
{
if (this.ProtectHDD)
{
if (object.Drive.DriveType != 1)
Quit("バグ発生:リムーバルディスク以外で削除しようとしました")
}
if (this.ConfirmDel)
{
var message = object + "\n\nを削除してもよろしいですか?";
if (! m_Confirm(message, "確認"))
return;
}
object.Delete(true); // 読み込み専用も削除
}
//-------------------------------------------------------------------
// 終了
//-------------------------------------------------------------------
function Quit( message )
{
WScript.Echo( message );
WScript.Quit();
}
/****************
Dialog.vbs
****************/
Option Explicit
'// フォルダ選択
Function m_SelectFolder( ByVal message )
Dim Win, f
Set Win = CreateObject("Shell.Application")
Set f = Win.BrowseForFolder( 0, message, 1 )
If f Is Nothing Then WScript.Quit
m_SelectFolder = f.Items.Item.Path
End Function
'// 確認
Function m_Confirm( ByVal message, ByVal title )
Select Case (MsgBox(message, vbYesNoCancel + vbInformation, title))
Case vbYes m_Confirm = True
Case vbNo m_Confirm = False
Case vbCancel WScript.Quit
End Select
End Function
'// 入力
Function m_InputBox( ByVal message, ByVal title )
m_InputBox = InputBox( message, title )
If m_InputBox = "" Then WScript.Quit
End Function
/*********************
Backup.wsf メイン
*********************/
<job>
<script language="JScript" src="common.js"/>
<script language="VBScript" src="/script/include/dialog.vbs"/>
<script language="JScript">
main();
function main()
{
var fDir = m_SelectFolder( "同期元のフォルダを選択してください" );
var tDir = m_SelectFolder( "同期先のフォルダを選択してください" );
var sync = new Syncronize();
sync.Execute(fDir, tDir);
}
</script>
</job>
ODBCデータソース作成中…
高橋です。
>Roboさん
>ファイルを検索し、指定した日付より古いファイルならば、
>他のサーバーに移動するようなスクリプトは作成可能でしょうか?
>
できます。
FileオブジェクトのDateCreatedプロパティ、DateLastModified
プロパティ、DateLastAccessedプロパティを参照すればOKです。
あとはcopyメソッドを使えば実現できます。
>この時、サブディレクトリーも含め検索し、移動先も移動元と同
>じディレクトリーの構成にしたいのですが
>
ディレクトリを再帰的に処理するようにすれば良いでしょう。
むたぐちさんが公開している「ディレクトリのTree構造を書き出す」
スクリプトが参考になります。
上と合わせ2点とも、Windows2000 Worldの1月号のWSH特集が非常に
参考になるのではないでしょうか。
個人的には、xcopyコマンドを利用するほうが楽かと思いますが…
(なにしろ、適切なオプションをつけてコマンドラインから実行する
だけで良いのですから)
質問、というかお願いになってしまうのですが ・・・
ファイルを検索し、指定した日付より古いファイルならば、他のサーバーに移動するようなスクリプトは作成可能でしょうか?
この時、サブディレクトリーも含め検索し、移動先も移動元と同じディレクトリーの構成にしたいのですが
どなたかお助けいただけると非常に助かります
インフルエンザではないのが救い?
高橋です。
.NETの話題に参加させて下さい。
# 強引
ブラウザといえば、Netscapeを使わなくなってから1年以上たちます。
新しいNetscape6は散々のようですね(Windows2000 FAQにも同じようなことを投稿してしまいました)。
今注目しているのが、OperaとMozillaなんですが、
Opera -> レンダリングエンジンがInternet Explorerと同じ
Mozilla -> Netscape6のコード中、Mozillaのコードが90%を占める
と最近聞いて、驚きました。
# 真偽の程は不明ですので、「ふーん」と聞き流してください。>皆様
# telnetでサーフィンするのも良いかもしれません。
>いしどさん
>>とりあえず、過去ログ28を一読されてはいかがでしょうか。
>ところで、「過去ログ28」というのは、過去の記事リスト28のことですか?
>
説明が足りませんでした。
いしどさんの書かれているとおり、「過去ログ28」というのは「過去の記事リスト28」のことです。私の勝手な呼び方で混乱させてしまったようで、申し訳ありません。>いしどさん、むたぐちさん
「過去の記事リスト28」では、全角半角混在文字列のバイト数を取得する方法について書かれています。この件に関しては、過去何度か話題になっているようですので(私は新参者ですので…)、そちらも参照されることをお勧めします。
過去の記事リスト検索には、AKiOSさんご提供の「WSH Lab. 掲示板 記事検索プログラム」(HTA)を利用すると便利です。私もいつも利用させて頂いています。>AKiOSさん、どうもです。
>むたぐちさん
半角カナ書き込みの件では失礼しました。
改めてお詫び申し上げます。
で、気になって少し調べてみたのですが、どうやら
"/C:\WIN95\デスクトップ\js.html" ※デスクトップは本当は半角
という文字列がShift-JISで表現されている時、それをEUCで解釈すると、
"/C:\WIN95\筑集眺餅\js.html"
のようになるようです。
こちらの掲示板は、
<meta http-equiv="Content-Type" content="text/html; charset=x-sjis">
となっていますので、私がWindowsでコピー(Shift-JIS表現)した文字列をEUCとして解釈したのかと思います。
# 文字化けを起こした張本人が何言ってる>自分
>私の使っているエディタは、よく半角の「デスクトップ」がかかれているファイルを
>EUCと誤認識してくれますんで、「筑集眺餅」はおなじみです(^^;
>
EmEditorですか?
私も実は使っています(未だにVersion2ですが)。
# こちらのVBS配色定義ファイルも利用させて頂いてます。
# VBSの開発が大変楽になりました。ありがとうございます。
>FreeMailさん
>95 で保存されているファイルと 2000 で保存されている
>ファイルを区別する方法というのはあるのですか?
>WORD95, EXCEL95 を使って 95 のファイルをオープンし,2000 のファイル
>に対してはエラー処理をおこないたいのですが可能ですか?
>
区別する方法は分かりませんが、Excel95でExcel2000形式で保存されたファイルを開こうとするとエラーになりますので、それを利用してはどうでしょうか? もちろん、他にも方法はあると思いますが、一例として、示させていただきます。
# Excelファイルのオープンは、【おじさま】さんのスクリプトを参考にさせて頂きました。
'====================== ここから ===============================
On Error Resume Next
Dim xl
Dim book
Set xl = Wscript.CreateObject("Excel.Application")
msgbox "Visible OK?"
xl.Visible = True
MsgBox "Open OK?"
Set book = xl.WorkBooks.Open("L:\hw\__koyama__\sk\新規Microsoft Excel ワークシート.xls")
If Err.Number <> 0 Then
MsgBox "Err.Number : " & Err.Number & vbCrLf & "Err.Description : " & Err.Description
WScript.Quit
End If
MsgBox "Quit OK?"
xl.Quit
Set book = Nothing
Set xl = Nothing
'====================== ここまで ===============================
11行目の「If Err.Number 〜」以下を、実際のエラー処理に変えればOKです。
# もしはずしていたらすみません。
おはようございます。
高橋さん、管理人むたぐちさん。ご回答ありがとうございます。
さっそく試させていただきます。
ありがとうございました。
おはようございます。
昨日の質問の回答ありがとうございます。
WSHは始めたばかりなんでいろいろ教えてください。
今日は WORD, EXCEL 操作について質問なんですが,
私のPCには 95 と 2000 が入っているのですが,
95 で保存されているファイルと 2000 で保存されている
ファイルを区別する方法というのはあるのですか?
WORD95, EXCEL95 を使って 95 のファイルをオープンし,2000 のファイル
に対してはエラー処理をおこないたいのですが可能ですか?
教えてください。
To 松島 さん
>この頃は、Netscape6とDOM1仕様を意識して、DOMに関する部分は、なるべくIE依存の
>オブジェクトモデルを使わなくて済むようにしようとしているところですが、innerHTMLは
>なかなか捨てきれないですね(^^;)。
Netscape6ではinnerHTMLがサポートされているということに最近気づきました。
innerText、outerHTML、outerTextに未対応のところを見ると、
N6の試験的に実装したいわば隠し機能の一つのようです
(他に要素の半透明化など、ひそかにIEを意識した機能を色々実装しているようです)。
>># さらにHTMLをエンコードしてしまえば、htaファイルをエディタで開かれても平気だ! (笑)
>キモの部分はすべてHTCのJScriptの中なんで、余裕で暗号化できますね〜(笑)。
エンコードされたスクリプトでも、完全ではないけれども読み取る方法があります。
あまりあてにしないほうが良いかも。
To: 管理人むたぐち さん
>> サブメニューがあるところにフォーカスがあると自動的に開く/外れると閉じる
>> という処理をうまくイベントに引っ掛けられずに、チョットてこずってしまってます(^^;
なんとかそれっぽく引っ掛けられました。
http://db.popup.org/matsushima/temp/20010124/popup.html
ポップアップメニューのマウスの制御は、いちおう完成…かな。
キー操作が加わると、フォーカスがらみのプロパティが増えて
また悩むことになりそうですが(笑)。
いちおう技術評価用に。
流用してバグったりヘンなことが起きても私は知りません(笑)。
http://db.popup.org/matsushima/temp/20010124/popup.lzh
>ポップアップといえば、
>http://popup.jscentral.com
>なんてのもありますね。
おぉぉ。これまた興味深いですね。
popupオブジェクトを使わないタイプの、IE4以降にしているところが、
5.5専用より汎用性があっていいところですね。
出現位置をうまく操作してスクロールバーが出にくくしているところがいい工夫で、
サブメニューがシュルっとスクロールして出てきたり、フォーカスのハイライトが
フェードイン/アウトで付いたり、なかなか凝ってますね。
(ポップアップメニューでも、画面右端をチェック方がいいかしら^^;)
>幸い、こちらはonkeydownとかevent.KeyCodeとかで簡単に実現しそうですね。
>アクティブなコントロールの認識とかで、ややこしいことにならないことを
>祈るのみです(^^;
たぶん、それで悩むでしょうね〜(笑)。>アクティブなコントロールの認識
はじめにアクセスキー。次にカーソルキー。の順で作ろうかなと考えてます。
># さらにHTMLをエンコードしてしまえば、htaファイルをエディタで開かれても平気だ! (笑)
キモの部分はすべてHTCのJScriptの中なんで、余裕で暗号化できますね〜(笑)。
この頃は、Netscape6とDOM1仕様を意識して、DOMに関する部分は、なるべくIE依存の
オブジェクトモデルを使わなくて済むようにしようとしているところですが、innerHTMLは
なかなか捨てきれないですね(^^;)。
>いろいろなところで読んだことを、もっともらしくつないだだけなので、あまり
>信用しないでくださいね。何も見ずに書いたので余計怪しい…。
いやぁ、でも読みやすかったですよ(^^)。するっと読めました(笑)。
>.NETの登場で、Microsoft的にも「OSやブラウザは何でもいい」という考え方に
>変わってきているようですね。
同じコードのソフトウェアが(快適に)動く(開発しやすい)共通のプラットフォーム
があれば、それがOSであれブラウザであれVMであれ、何でもいいんですよね。
Javaはニッチなものになってしまってますけど…。
Microsoftは、プラットフォームとしてのブラウザをCOM化してしまったら
他のOSへの移植が難しくなってしまったんで、.NET で仕切りなおしをしよう、
というカンジでしょうか。あと、ブラウザ技術ではVC++使いから舐めらる、とか(^^;)。
>まあ、純粋にWWWブラウザとしての機能だけを持った、高性能なブラウザが登場することは
>十分考えられます。
私は、それがネスケの姿勢かなーと思ってます。
業務向きのプラットフォームになりえるかを考えると、
良くも悪くもIEとは対照的ですし。
>Operaなんかはいい線いっているようですが、日本語が駄目ということで、
フォントの設定をすると、かろうじてSHIFT-JISが見れますけど、所々文字化けします。
ただ、MDIである、という点だけでは、数あるIEコンポーネントを利用したMDI型/タブ型の
ブラウザのほうがWindowsでは便利ですね(^^;;)。
>あと、注目はオープンソース陣営ですね。(いや、ネスケのような営利団体と違って)
もぢらですか?(笑)
To: 高橋 さん
># でも、セキュリティの基本 & 破壊活動からの最終的な壁はユーザーである、
># と思います。
同感です。
それが理想であり、根本的な解決への一番の近道かなと思ってます。
まぁ、技術者本位の考え方…といわれたらおしまいなんですけど、
パソコンってのは、そういうもんだと思いますし(^^;;
>高橋 さん
>VBSは内部でUNICODEを使用している為です。
>普通のWin環境であれば、1文字をUNICODEで表現すると2バイトになりますから、
>いしどさんのような結果になります。
>このあたりは、この掲示板でも良く盛り上がっています。
>とりあえず、過去ログ28を一読されてはいかがでしょうか。
高橋さん、ありがとうございました。
納得しました。
(といっても、なにか他の手段を考えないといけないのですが)
ところで、「過去ログ28」というのは、過去の記事リスト28のことですか?
何度もすいません。
To: ほっし さん
ログを検索してみました。
http://www.users.gr.jp/ml/archive/wsh/130.asp
です。
Win32_LogicalFileSecuritySettingクラスでした。
To: ガリー さん
> VBSアプリを起動してウィンドウの表示・非表示を切りかえるスクリプトの事ですが、僕がやりたいのはHTAの表示・非表示です。教わった通りやってみたのですが、
> HTAだとうまくいかないようです。HTAということを限定すれば、何とかできないで
> しょうか?
以前、AKiOSさんが、HTAのウィンドウサイズを切り替えるプログラムを作成されたのですが、
その手法が参考になるのではないでしょうか。
要するに、singleinstance=yesにしておき、WshShell.Run hoge.hta,0,True で非表示起動。
その後、WshShell.Run hoge.hta,1,True として表示させる、という方法です。
参考記事:
20-17 AKiOS さん 2000/08/10 03:43
20-08 AKiOS さん 2000/08/08 11:30
20-06 AKiOS さん 2000/08/07 23:38
20-01 AKiOS さん 2000/08/07 00:20
ただし、IE5.5だとこの手法は使えません。
そもそもHTAが非表示で起動できないのです。
参考記事:
21-43 管理人むたぐち さん 2000/09/05 23:41
この解決方法は…思いつかないですねえ。
起動するHTAそのものに、手を加えることができればいいんですが。
質問ばっかりするガリーです。(jrは捨てました)
かなり前の話ですが、
VBSアプリを起動してウィンドウの表示・非表示を切りかえるスクリプトの事ですが、僕がやりたいのはHTAの表示・非表示です。教わった通りやってみたのですが、
HTAだとうまくいかないようです。HTAということを限定すれば、何とかできないで
しょうか?
To: ほっし さん
> WSHを使って、Administratorがファイルやフォルダのアクセス権を変更することは可能なのでしょうか??
高橋さんのおっしゃるように、コンソールで動くコマンドを使ってやればいいと思います。
が、私にも、コマンドはバッチから使ってこそ価値を発揮するものだという感じがします。
WSHからであれば、WMIを使ってやるのが良いでしょうね。
CIM_DataFileクラスとかWin32_Directoryクラスに、そういうメソッドがあったような
気がします。
UsersGroupのWSH-MLの過去記事に例があったと思うので、検索してみてはいかがでしょう。
To: ふぁんたz さん
> 今思うと,先のエラーは「WSHプログラムをスタートアップから実行しようとすると,WScriptオブジェクトを一時的に解決できずエラー表示をしてしまう.が,かといってWScriptオブジェクトが解決できないというわけではない.」というものだったと思います.
そんな現象があるんですか。
ActiveX オブジェクトって、いつでも作成できるもんじゃなかったのね(^^;
try...catchでエラートラップしておいたほうがいいのかもしれませんね。
> とは言っても,ActiveXコントロールを使用してるので,「実行結果に対する一切の責任」を放棄したいですね.
私なんか、このサイトを立ち上げた最初っから、とっくに放棄してます(^^;
To: 松島 さん
> サブメニューがあるところにフォーカスがあると自動的に開く/外れると閉じる
> という処理をうまくイベントに引っ掛けられずに、チョットてこずってしまってます(^^;
ポップアップといえば、
http://popup.jscentral.com
なんてのもありますね。
# シェアウェア?
> そのうち「なんちゃってショートカットキー」に手を入れてしまうかもです(笑)。
幸い、こちらはonkeydownとかevent.KeyCodeとかで簡単に実現しそうですね。
アクティブなコントロールの認識とかで、ややこしいことにならないことを
祈るのみです(^^;
> テーブルで整形したり、DIVのborderでフチを作ったり区切り線を作ったり。
> popupオブジェクトに入れているHTMLをalertで表示させると、
> なんじゃそりゃー的なソースが丸見えですよ(笑)。
HTAなら、右クリックメニューの抑制ができるので、ソースが見られることはありません。
どんなに醜い処理をしていても平気です。
# さらにHTMLをエンコードしてしまえば、htaファイルをエディタで開かれても平気だ! (笑)
> あはは。趣味でやっている活動のサイトです。
> まっとうに会社員しながらだと、いつも時間が取れなくてあっぷあっぷですけども(笑)。
ご苦労様です。
私もまっとうな?大学生しながら趣味でやってます(^^;
> あらためて説明されると、すごくためになります(^^)。
いろいろなところで読んだことを、もっともらしくつないだだけなので、あまり
信用しないでくださいね。何も見ずに書いたので余計怪しい…。
> ブラウザ戦争は…、結論としては、
> 「どちらが開発者に支持されやすいプラットフォームを作ったか」
> が鍵になっていたかなーと、思っています。
.NETの登場で、Microsoft的にも「OSやブラウザは何でもいい」という考え方に
変わってきているようですね。
.NET時代においては、IEのプラットフォームとしての重要性は、今ほどでは
なくなるような気がするのです。
# HTML、というかXMLが、次世代WindowsのUIのベースになると思ってたんですが、
# そうでもなくなるのかな? Forms+ って言ってたような気がするんですが(^^;
> (個人的には、Windows以外のOSでは、ブラウザ戦争はまだ終わっていないような気がします(笑)。)
そうですね。ただ、ブラウザというものの機能があまりにも複雑化・多様化してしまった
今となっては、そういうブラウザを作るだけのパワーを持った団体というのが限られてくるのでは
ないかと思っています。
まあ、純粋にWWWブラウザとしての機能だけを持った、高性能なブラウザが登場することは
十分考えられます。
Operaなんかはいい線いっているようですが、日本語が駄目ということで、
ポストネスケ、ポストIEなブラウザの本命ってのはまだないでしょう。
あと、注目はオープンソース陣営ですね。(いや、ネスケのような営利団体と違って)
彼らが本気でブラウザを作ったら、すごいもんができるんじゃないかと思ってるんですが。
# あ、Windows版もよろしく…て誰に言ってるんだ
To: FreeMail さん
> オブジェクトの解説のShellオブジェクト (ShellApplication) の定数の部分で
> Internet Explorer の定数名の表示がされないのですが,
> なんという定数名(ssf???)になるんでしょうか?
高橋さんのおっしゃるとおり、未定義です。
ただ、NameSpaceメソッドやOpenメソッドで1を指定すると、デスクトップの
Internet Explorerに対応するので、表に載せておきました。
To: みっちゃん さん & 【おじさま】 さん
> Set book = xl.WorkBooks.Open ("C:\aaa\FINALDATA.text")
> ではエクセルのセルに収まらず
これは【おじさま】さんにお任せします(^^;
# やったことがないのでぜんぜんわかりません(^^;
> Set book = xl.WorkBooks.OpenText _ FileName:="C:\aaa\FINALDATA.text",DataType:=xlDelimited,Comma:=True
> の様にvbaの記述にするとエラーがでます
VBSが、
引数名:=引数
という書式をサポートしていないからです。
引数は、メソッドで定義されている順番どおりに指定します。
Set o = obj.method(opt1,opt2,opt3)
# 返り値を参照するときは括弧を忘れずに!
もし、引数が必要なければ、その引数を省略して
Set o = obj.method(opt1,,opt3)
のように記述することもできます。
To: 高橋 さん
フォローいつもありがとうございます。
> 半角カナを使ってしまうとは、大変失礼しました。m(_ _)m
この掲示板で本当に半角カナを使うと、もっと悲惨なことになるので、
今回はおそらく「半角カナが化けた状態の文字列」をコピーされただけと思います。
私の使っているエディタは、よく半角の「デスクトップ」がかかれているファイルを
EUCと誤認識してくれますんで、「筑集眺餅」はおなじみです(^^;
# 最初、なんじゃこのフォルダは、と思ったことは言うまでもない
> 「ハッカー」と「クラッカー」等も、良く議論のネタになりますよね。
「ホームページ」「レス」「リンクフリー」「カキコ」
…いかん、趣旨が違っている!
他の方のQ&Aに割り込んじゃって済みません。
高橋さん、むたぐちさん、ご丁寧な回答に感激です。
HTML系のものは始めてなので、高橋さんの問い返しも何を問われているのかが
分からないくらいなチョー初心者ですが、なんとかうまく行きました。
ありがとうございました。
みっちゃんさん
>ではエクセルのセルに収まらず
読み込んだ CSV が必要とする列数にもよりますが、例えば1列目から5列目
までならば
For intCount = 1 To 5
xl.Columns(intCount).AutoFit
Next
で収まりませんか。もしかしてこういう意味じゃないのかも(私 VBA のほうは
全然知らないので)。
それとも CSV として認識しないということでしょうか。読み込むファイルの
拡張子が .csv だと特に指定しなくても CSV として判断するようですし、多
分強制的に「これは CSV だよ」と指定するプロパティもあるんだと思います
が、これは調べていません(VBA のほうを拝見すると DataType というのが
そうなのかも)。
>むたぐちさん
>> document.URL → file://C:\WIN95\筑集眺餅\a.html
>> location.pathname → /C:\WIN95\筑集眺餅\a.html
>半角カナの「デスクトップ」をEUCとして見ると「筑集眺餅」になる(^^;
># どうでもいいですね。失礼。
>
これは失礼しました。
半角カナを使ってしまうとは、大変失礼しました。m(_ _)m
ご指摘、ありがとうございます。
以後、より一層気をつけます。
# IEからコピー&ペーストしたのが原因…
>ほっしさん
>さて、いきなりですが質問させてください。
>WSHを使って、Administratorがファイルやフォルダのアクセス権を
>変更することは可能なのでしょうか??
>
NT系であれば、caclsコマンドをWshShell.Runで実行すれば可能です。
# 私的にはバッチファイル + caclsコマンドのほうが好みですが…
>松島さん
>>I Love Youはウィルスではないですが、世間的にはウィルスで通っているので、
>>私もこの名前を使ってしまいました。
>広義と狭義ですよね。普通の人にいきなり「ワーム」といっても
>カブトムシの幼虫みたいなのが頭に思い浮かぶかもしれませんし(^^;)。
>
「ハッカー」と「クラッカー」等も、良く議論のネタになりますよね。
「I Love You」で、WSHは随分評判を落としましたが、あれは皆さんが書かれて
いるように、Outlook(やOE、その他の対象メイラー)の問題ですよね。さらに
言うならば、セキュリティを意識しないユーザーにこそ責任があると、今でも
思っています。
# ↑等と書くと、後が怖そうですね。
# でも、セキュリティの基本 & 破壊活動からの最終的な壁はユーザーである、
# と思います。
# WSH等は道具です。道具は使いようによって、便利にも不便にも、安全にも危
# 険にもなると思います。
>FreeMailさん
>オブジェクトの解説のShellオブジェクト (ShellApplication) の定数の部分で
>Internet Explorer の定数名の表示がされないのですが,
>なんという定数名(ssf???)になるんでしょうか?
>
このあたりの定数は、オブジェクトブラウザで調べるのが一般的ですが、
私がざっと確認したところ、IE(値:1)を示す定数は定義されていないようですね。
では、なぜ「Internet Explorer 1」とオブジェクト解説のページに書いてあるか
というと、むたぐちさんに確認するより他にないのでしょうか?
# 私も知りたいです。>むたぐちさん
とりあえず、下記のようにして使われてはいかがでしょうか?
ユニーク(一意)な名前にしておけば、後で定数名が判明した時に、エディタ等の置
換機能を使って変換してしまえば良いでしょう。
'========================================================
Const ssfInternetExplorer = 1
'========================================================
>いしどさん
>半角・全角混在のエリアをMidB関数を使って、バイト数で処理をしたいと思ってい
>ましたが、上記の結果だとうまくいきません。
>
VBSは内部でUNICODEを使用している為です。
普通のWin環境であれば、1文字をUNICODEで表現すると2バイトになりますから、いし
どさんのような結果になります。
このあたりは、この掲示板でも良く盛り上がっています。
とりあえず、過去ログ28を一読されてはいかがでしょうか。
ありがとうございます
csvテキストをエクセルで読み込むけんですが
Set xl = Wscript.CreateObject("Excel.Application")
xl.Visible = True
Set book = xl.WorkBooks.Open ("C:\aaa\FINALDATA.text")
ではエクセルのセルに収まらず
Set book = xl.WorkBooks.OpenText _ FileName:="C:\aaa\FINALDATA.text",DataType:=xlDelimited,Comma:=True
の様にvbaの記述にするとエラーがでます
どなたかアドバイスお願いします
はじめまして。
WSHを始めたばかりで、このホームページには、たいへんお世話になっています。
さて、MidB関数について、質問です。
a = Mid ("1234567890",1,4)
b = MidB("1234567890",1,4)
c = Mid ("あいうえお",1,4)
d = MidB("あいうえお",1,4)
結果は、a=1234,b=12,c=あいうえ,d=あい となります。
予想では、b=1234 と思っていました。
半角・全角混在のエリアをMidB関数を使って、バイト数で処理をしたいと思っていましたが、上記の結果だとうまくいきません。
よろしくお願いします。
はじめまして。
いろいろ参考にさせてもらっています。
そこで質問なのですが,
オブジェクトの解説のShellオブジェクト (ShellApplication) の定数の部分で
Internet Explorer の定数名の表示がされないのですが,
なんという定数名(ssf???)になるんでしょうか?
To: 管理人むたぐち さん
>拝見しました。いやー、本物と区別がつかないレベルになってきましたね。
サブメニューがあるところにフォーカスがあると自動的に開く/外れると閉じる
という処理をうまくイベントに引っ掛けられずに、チョットてこずってしまってます(^^;
そのうち「なんちゃってショートカットキー」に手を入れてしまうかもです(笑)。
>popupオブジェクトって、Windows標準のメニューを表現するために作られたのでは、とか
>思えてきました(^^;
どうなんでしょう(笑)。
テーブルで整形したり、DIVのborderでフチを作ったり区切り線を作ったり。
popupオブジェクトに入れているHTMLをalertで表示させると、
なんじゃそりゃー的なソースが丸見えですよ(笑)。
># そういえば、松島さんのサイトのドメイン名は…(^^;
あはは。趣味でやっている活動のサイトです。
まっとうに会社員しながらだと、いつも時間が取れなくてあっぷあっぷですけども(笑)。
>I Love Youはウィルスではないですが、世間的にはウィルスで通っているので、
>私もこの名前を使ってしまいました。
広義と狭義ですよね。普通の人にいきなり「ワーム」といっても
カブトムシの幼虫みたいなのが頭に思い浮かぶかもしれませんし(^^;)。
偶然EXEファイルでそういうものが届いたので、自分のところの掲示板に書き込みました。
世間の通念に負けて、めちゃめちゃ「I Love Youウィルス」とか書いちゃってますけど(苦)。
http://cgi.popup.org/ai/board/mewbbs.cgi
リモート制御の話も、COMの歴史の話も、とても興味深いです(^^)。
Win95初期の頃は、まだまだヘッポコWinユーザだったので、
あらためて説明されると、すごくためになります(^^)。
ブラウザ戦争は…、結論としては、
「どちらが開発者に支持されやすいプラットフォームを作ったか」
が鍵になっていたかなーと、思っています。
(個人的には、Windows以外のOSでは、ブラウザ戦争はまだ終わっていないような気がします(笑)。)
To:管理人さん
ActiveXObjectによる宣言でエラー回避ができました.
今思うと,先のエラーは「WSHプログラムをスタートアップから実行しようとすると,WScriptオブジェクトを一時的に解決できずエラー表示をしてしまう.が,かといってWScriptオブジェクトが解決できないというわけではない.」というものだったと思います.
ActiveXObjectの呼び出し方をすっかり忘れていたので,ほんと助かりました.これで世間様に出しても恥ずかしくないプログラムが出来ました.とは言っても,ActiveXコントロールを使用してるので,「実行結果に対する一切の責任」を放棄したいですね.
はじめまして。
最近こちらでWSHを勉強しはじめました。とてもわかりやすくて感謝しております。
さて、いきなりですが質問させてください。
WSHを使って、Administratorがファイルやフォルダのアクセス権を変更することは可能なのでしょうか??
To: みっちゃん さん
> エクセルで、csv形式のtxtファイルを読み込ませる方法を
> 教えてください。(コンマ区切り)
> vbaで行っていた作業をwshで行いたいと考えています。
基本的にVBAと同じコードでいけるはずです。
WSHからExcelを利用するときは、Excel.ApplicationをCreateObjectします。
具体的な方法は、岡山の鉄人さんのページ(http://www.hi-ho.ne.jp/tetsuzo/index.htm)が
参考になると思います。
To: ふぁんたz さん
> スタートアップに.jsファイルを入れて,起動ごとにWSHプログラムを実行するようにしています.実行結果は得られるのですが,
> var Fs = WScript.CreateObject("Scripting.FileSystemObject");
> や
> var Shell = WScript.CreateObject("Shell.Application");
> で,エラー(Jscript実行時エラー:オブジェクトでサポートされていないプロパティまたはメソッドです.)が毎回出てしまい,困っています.
不思議ですねえ。
WScriptオブジェクトのCreateObjectメソッドを認識してないのでしょうか。
しかし…
> var WShell = WScript.CreateObject("WScript.Shell");
がうまくいくのに、どうしてなんでしょう。
もし、ProgIDが不適切な場合は、別のエラーが出るはずですしね。
> どなたかこの問題を解決された方いらっしゃいませんか?
ちょっと原因がわかりません。
var Shell = new ActiveXObject("Shell.Application");
とかも動作しませんか?
管理人さん,そして皆様,昨世紀はお世話になりました.今年もよろしくおねがいします.
ところで,
スタートアップに.jsファイルを入れて,起動ごとにWSHプログラムを実行するようにしています.実行結果は得られるのですが,
var Fs = WScript.CreateObject("Scripting.FileSystemObject");
や
var Shell = WScript.CreateObject("Shell.Application");
で,エラー(Jscript実行時エラー:オブジェクトでサポートされていないプロパティまたはメソッドです.)が毎回出てしまい,困っています.
今は,
var WShell = WScript.CreateObject("WScript.Shell");
WScript.Sleep(3000);
WShell.Sendkeys("{ENTER}");
として誤魔化しているのですが,ちょっと情けない気分です.
どなたかこの問題を解決された方いらっしゃいませんか?
wsh初心者です
エクセルで、csv形式のtxtファイルを読み込ませる方法を
教えてください。(コンマ区切り)
vbaで行っていた作業をwshで行いたいと考えています。
To: 高橋 さん
> document.URL → file://C:\WIN95\筑集眺餅\a.html
> location.pathname → /C:\WIN95\筑集眺餅\a.html
半角カナの「デスクトップ」をEUCとして見ると「筑集眺餅」になる(^^;
# どうでもいいですね。失礼。
> >ついでにいうと、IEではJavaScriptをスクリプトエンジンとしては持っていないはずです。
> >JScriptのエイリアスみたいに扱われるんでしょうね、きっと。
> >
> え、そうだったんですか?(初耳)
> 昔はどうだったんでしょう。気になりますね。
昔は、つまりIE ver.1(Win95 Plus!に付属。懐かしい)の頃は、そもそもJavaScriptどころか、
スクリプト自体が実装されていなかったらしいです。
で、ネスケがJavaScriptをサポートしていたため(かどうかは知らないが)、シェアを
奪われていた。(思えばこれが"ブラウザ戦争"の幕開けだった…)
これはまずいと思ったMSが、IEにスクリプトを実装しようとした際、JavaScriptだけでなく
どうせならVBやVBAと似たスクリプト言語、すなわちVBSもサポートしようとした。
でも、複数の言語をサポートするときに、HTMLのドキュメントオブジェクトを
いちいち両言語用に定義していっては非効率だというので、どちらからも呼び出し可能な
ドキュメントオブジェクトモデルを、COM(簡単に言うと、アプリケーションを部品から
構築し、相互呼び出しを可能にする技術)を使って実装した。
呼び出し側のスクリプトエンジンもCOM化し、スクリプト自体をいろいろなホスト(IE,ASP,WSH etc)
から呼び出し可能にした。
# Microsoft版JavaScriptは、JScriptという名前でリリースされたが、
# COMコンポーネントを扱えるという、本家JavaScriptとは明確な差異があるために
# 名前を変えたのか、ほかに政治的な理由があったのか私は知りません(おそらく両方だろうけど)。
# その後、JavaScriptとJScriptは、ECMAという団体?が標準スクリプト言語としてまとめあげ、
# 両スクリプト言語は以後ECMA Scriptに準拠することとなる。(JScript.NETも一応ECMA準拠らしい)が、
# 非互換性はもちろんいっぱいある。でも一般によく言われるネスケとIEのスクリプトの非互換性は、
# おもにドキュメントオブジェクトモデル(これ、IEではDynamicHTMLと称していますね)の非互換性に
# 起因している。
これがIE3で完成したIEの基本構造です。
(このとき、HTMLのドキュメントモデルのほかに、ブラウザ部分のCOM化も完了しています。
COMコンポーネントとなったIEブラウザは、メーラーのHTML表示に使われたり、WSHからの制御を
可能にしたりしました)
(このあたりの話は、「Rubyを256倍使うための本 邪道編」に詳しく述べられています。
こういう非常に興味深い話が、何気なく書かれているので、この本は侮れません)
その後、WindowsのシェルであるエクスプローラのCOM化が完了し、IEとシェルが統合したのが
IE4(Win98)です。フォルダのウィンドウが、IEのウィンドウと同じブラウザコントロールで
表示されるようになりました。(フォルダのWeb表示。ファイル表示部分はActiveX
コントロールとして実装された。ActiveXコントロールもCOMが支える技術の一つ。
ActiveX スクリプティングエンジンは、ActiveXコントロール等のCOMコンポーネントを自在に
操ることで機能を発揮する。ちなみに、ActiveXコントロールとは、COMコンポーネント
のうちフォームを持つものを指し、コンテナとしての機能を持つクライアント(VB,IE,HTA等)
からの呼び出しが可能だが、WSHからは基本的に使用できない)
HTMLヘルプやアクティブデスクトップなどもシェル統合によって追加された機能ですね。
一般には、これでブラウザ戦争が終結したといわれます。
その後、IE5では、これまでのようなドラスティックな変更は加えられなかったものの、
確実に使い勝手を増していきました。また、HTA(HTMLアプリケーション)が登場し、
IEは、ついにユーザーインターフェースの一つになりました。
(WinMeのヘルプとサポート、Win2000のアプリケーションの追加と削除等)
Win95からWinMeまで、たしかにカーネルにたいした変化はありませんでした。
が、シェルはとんでもなく変化してきているんです。
(ま、かなり迷走気味ですが、COMというキーワードを元に見ていくと、割と妥当な
進化を遂げていると言えなくもないかも)
そして、基本的にローカルな世界で閉じていたCOMを、ネットワーク全体の規模に
拡張したのがDCOMやらCOM+です。(なのか?ちょっとじしんなし)
この仕組みを使って、ネットワーク上に分散コンポーネントな世界を構築することが
できるようになり、ADSIやWMIといったリモート管理用のCOMコンポーネントが登場
したりしました。
また、これらの仕組みを使ってWindowsDNAという三層構造(データ、ビジネスロジック、
プレゼンテーション)の開発モデルが提供されました。
とまあ、20世紀の終わりは、WindowsがCOMというキーワードを元にこのような
発展を遂げてきたのですが、最後の最後で大どんでん返しが待ち受けていました。
みなさんもすでにご存知の、.NETです。.NETは、インターネット上に巨大な仮想マシンを
構築してしまおうという仕組みです。その部品としてはCOMではなく、.NET Frameworkという
ものが新たに登場します。そして、その部品をつなぎ合わせる開発言語として
Common Language Runtimeが使われます。
…きりがないのでこの辺でやめよう(^^;
この先は私自身もまだよくわかっていないですし。
JScriptの話を書こうかと思ったら、なんかCOMの歴史になってしまった(^^;
しかもこれは相当怪しいぞ。眉につばをつけてご覧くださいませ…。