1 名前:デフォルトの名無しさん [2007/04/16(月) 13:48:54 ] ( ´ゝ`) 誰か詳しい情報キボンヌ ●過去スレ WSH(・∀・)スレッド! pc11.2ch.net/test/read.cgi/tech/1055075469/ ●関連スレ お前ら、wsh使ってますか? part6 pc11.2ch.net/test/read.cgi/win/1155040873/ 【イケメン】阿龍スレ避難所@自己紹介【彼女募集中!】 life8.2ch.net/test/read.cgi/intro/1171897814/ ●個人サイト Windows Scripting Host Laboratory www.roy.hi-ho.ne.jp/mutaguchi/wsh/ Windows Script Wiki winscript.s41.xrea.com/wiki/index.php 音楽 winscript.mine.nu/music/ キャラネタ板・なな板のための何か charaneta.mine.nu/
669 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 02:20:08 ] readonly属性をつけることならできるな
670 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 03:43:53 ] >>669 それです。教えてください。
671 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 17:41:54 ] Attributes=1
672 名前:デフォルトの名無しさん mailto:sage [2008/02/03(日) 18:09:40 ] ヘルプみろ
673 名前:662 mailto:sage [2008/02/04(月) 06:06:35 ] >>664 なるほど。その値でうまくいくようです。ありがとうございます、
674 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 16:53:29 ] 質問です。 現在、VBSCriptで各ディレクトリのアクセス権限を テキストに書き出す仕組みを作成しています。 コマンドは下記のようになっております。 CACLS <ディレクトリ名> >> <出力ファイル> ディレクトリ名、出力ファイル名はパラメータとして受け取り、 文字列を結合してWshShell.Runに渡しております。 ・・・【1】 ここで問題なのですが、【1】の文字列をコピペして DOSプロンプトで実行すると、正しく出力がされているのですが、 WshShell.Runにて実行すると、正しく出力されません。 この部分のコードは下記のようになっております。----------* Command = "CACLS " & DIRName & " > " & ExportFileName objShell.Run Command ' WShellオブジェクトは生成済み --------------------------------------------------------* 恐れ入りますが、どなたかこのような現象を経験されておりましたら、 解決策の指南のほどよろしくお願いいたします。
675 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:26:05 ] >WShellオブジェクトは生成済み ソース全部貼るべき 「・・・【1】」って違う場所に書いてない?
676 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 18:27:44 ] >WshShell.Runにて実行すると、正しく出力されません。 とはどうなるのだ?
677 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 19:11:25 ] Set objShell = WScript.CreateObject("WScript.Shell") Command = "CACLS %cd% > out.txt" objShell.Run Command これで試してみたけど、うまくいかないね。 Command = "cmd /c cacls〜 ではうまくいくけど。
678 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:04:10 ] %windir%\system32\cacls.exeと指定したらどう?
679 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 21:50:01 ] リダイレクトはシェル(cmd.exe)の機能。
680 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 06:34:50 ] フルパス指定でも無理
681 名前:674 mailto:sage [2008/02/07(木) 09:15:53 ] 皆さんご回答ありがとうございます。 >>WshShell.Runにて実行すると、正しく出力されません。 >とはどうなるのだ? パラメータ無しで実行したCACLSのように、ヘルプが表示されます。 経過ですが、 >>677 さんの"cmd /c cacls〜"で試してみたところ、うまくいきました。 大変お世話になりました。
682 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 12:25:55 ] タクススケジューラの引数について質問です。 Windowsタクススケジューラで設定した引数が渡ってこない(WScript.Arguments.Count = 0)のです。 同じパス(コマンドライン)で作ったショートカットを実行すると引数が渡ってくる(WScript.Arguments.Count > 0 )のです。 実際に試した記述は、「c:\test.vbs abc」と「c:\test.vbs "abc"」と「"c:\test.vbs abc"」です。 何か特別な記述方法などあるのでしょうか? 先輩方、よろしくご教授ください。
683 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:36:44 ] cmd /c c:\test.vbs abc
684 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 15:31:49 ] 先輩!ありがとうございました!
685 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:29:01 ] ファイルをドラッグアンドドロップしたらパスを表示するスクリプトが動きません。 どこを直せばよいか教えてください。 var strArgument = new Array(); if ( WScript.Arguments.count() == 0 ) { WScript.Echo ("コマンドライン引数が指定されていません。"); } else { for ( strArgument in WScript.Arguments ) { WScript.echo ( strArgument[i] ); } }
686 名前:685 mailto:sage [2008/02/08(金) 21:37:42 ] スクリプトをダブルクリックした時は正常作動しますが ファイルをドロップすると何も表示されません。 スクリプトエラーも出ないので困っています。
687 名前:デフォルトの名無しさん [2008/02/08(金) 22:03:46 ] コマンドライン引数が指定されているからに決まってるだろ
688 名前:デフォルトの名無しさん [2008/02/08(金) 22:04:54 ] var strArgument = new Array(); if ( WScript.Arguments.count() == 0 ) { WScript.Echo ("コマンドライン引数が指定されていません。"); } else { WScript.Echo ("コマンドライン引数が指定されました。"); }
689 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:18:40 ] for ( strArgument in WScript.Arguments ) { WScript.echo ( strArgument[i] ); } これ、なにしてるの?
690 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:42:40 ] >>688 var strArgument = new Array(); これ、なにしてるの?
691 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 22:52:48 ] msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsproarguments.asp
692 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:25:21 ] >>685 // var strArgument = new Array(); if ( WScript.Arguments.count() == 0 ) { WScript.Echo ("コマンドライン引数が指定されていません。"); } else { for (i = 0; i < WScript.Arguments.length; i++ ) { WScript.echo ( WScript.Arguments(i) ); } } .vbsファイルしか作った事がないけど、なんとなく.jsファイルはこれで動くんじゃないかなぁと・・?
693 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 23:56:38 ] >>692 > if ( WScript.Arguments.count() == 0 ) { count はメソッドじゃなくプロパティ。
694 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:10:28 ] >>693 えー?
695 名前:685 mailto:sage [2008/02/09(土) 00:12:24 ] >>692 動きました。ありがとうございます。 只今WSHをJScriptで書こうと、vbsのスクリプトを翻訳しながら勉強中です。 でもJSのサンプルコードが少なくて困ってました。 今回は元コードに配列を使っているように見えたので、それらしく書き換えたけど動きませんでした。 なんでここまで違いが出るのか、まだ理解してませんw ↓元のサンプルコード Option Explicit Dim strArgument If WScript.Arguments.Count = 0 Then WScript.Echo "コマンドライン引数が指定されていません。" Else For Each strArgument In WScript.Arguments WScript.Echo strArgument Next End If
696 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:28:24 ] >>695 実際にはいろいろな書き方ができるので、余計に混乱してるのかも。 元のスクリプトになるべく忠実に対応させるなら、以下のような書き方もできる。 if (WScript.Arguments.length == 0) { WScript.Echo("コマンドライン引数が指定されていません。"); } else { var e = new Enumerator(WScript.Arguments); for (; !e.atEnd(); e.moveNext()) { WScript.Echo(e.item()); } }
697 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:31:07 ] for (var e = new Enumerator(WScript.Arguments); !e.atEnd(); e.moveNext()) { すっきり
698 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 00:41:48 ] >只今WSHをJScriptで書こうと、vbsのスクリプトを翻訳しながら勉強中です。 なぜ?遅いのに。いろいろ細かいことにうるさいのに。などなど
699 名前:デフォルトの名無しさん [2008/02/09(土) 01:35:29 ] マイクロソフトの公用言語はBASIC ゲイツはBASIC長者 java には裁判で負けた恨みが有る
700 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 09:13:38 ] WSHは使うけど、今はもうVBScriptでは書かないなあ。 JavaScript(JScript)のある意味変態的な言語仕様に慣れてしまったら戻れない。
701 名前:デフォルトの名無しさん [2008/02/09(土) 14:37:22 ] ↑ 変態
702 名前:693 mailto:sage [2008/02/09(土) 15:58:20 ] >>694 > >>693 > えー? といわれてMSDN見てきた。 msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/wsobjWshArguments.asp プロパティとメソッド、両方あるな……。 ふだんはJScriptで length 使うか Enumerator にして扱ってるんで、 確認不足で適当に書いてしまった。スマソ
703 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 16:38:49 ] >プロパティとメソッド、両方あるな……。 プロパティを見るとメソッドになってて、メソッドしかないような
704 名前:デフォルトの名無しさん [2008/02/09(土) 17:18:48 ] 動きさえすればどっちでもいいよ
705 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 17:22:03 ] with (WScript.Arguments) { WScript.Echo(Count()); WScript.Echo(length); WScript.Echo(Count); // エラー }
706 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:48:58 ] basp21のsocketって非同期通信できませんか? データ取得できたらコールバック関数を呼びたいんですが。 接続できなかった場合とかタイムアウトになるまで 他の処理ができない
707 名前:685 mailto:sage [2008/02/09(土) 23:10:36 ] 昨日教えてもらったスクリプトを、テキストに出力しようとしたら働きません。 また教えてください。 var objFso = new ActiveXObject("Scripting.FileSystemObject"); var objFile = objFso.OpenTextFile("testdirlist.txt", 8, true); var path String(); objArgs = WScript.Arguments; for (i = 0; i < objArgs.length; i++) { path = path + objArgs(i) + "\n"; } //WScript.Echo(path);//←働く objFile.WriteLine(path);//←働かない objFile.Close();
708 名前:685 mailto:sage [2008/02/09(土) 23:13:59 ] ×var path String(); ○var path = String();
709 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 23:46:55 ] 絶対パスにすれば
710 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 00:18:19 ] var path = ""; で
711 名前:685 mailto:sage [2008/02/10(日) 00:30:39 ] >>709 動きました!
712 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:28:54 ] WSH 5.1(Win2k)環境でカレントディレクトリを変更したいのですが Set foo = WScript.CreateObject("WScript.Shell") foo.CurrentDirectory = と言った.CurrentDirectoryプロパティはWSH 5.6(WinXP)以降の環境でしか動作しません。 もちろんWin2kのWSHをバージョンアップすれば動くのですが、それは手間がかかる為 やらずに解決したいと思っています。 やりたい事は、WSHスクリプトファイル(仮にhoge.vbs)と同じ階層に scriptと言うフォルダがあり、 そのフォルダの中に var.bat と言うファイルがあるとして Set objShell = WScript.CreateObject("WScript.Shell") Set fs = WScript.CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(".") objShell.Run f.path & "\script\var.bat" 等として、他のフォルダ内の実行ファイルを実行したいのです。 しかし実際にコレをやると、指定されたファイルが見つかりません とエラーが表示されて実行できません。 確かにファイルは存在しますし、WScript.Echo f.path & "\script\var.bat" とかやってパスを確認しても 正しいパスです。 なので、カレントディレクトリを実行ファイルのある場所に移動しないと実行できないのかなと 考え、CurrentDirectoryを変更する方法を考えているのですが・・・ 普通に考えてCurrentDirectoryを変更せずとも実行できるはずですよねぇ・・アドバイス頂けませんか?
713 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 12:37:49 ] パスをだぶるくぉーてーしょんで囲みなさい
714 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:26:29 ] >>713 レスありがとうございます。 strDrv = strCurrent & "driver\install.bat" ↑これで、カレントディレクトリ\driver\install.bat がstrDrv に入ります。 その後 objWshShell.Run strDrv で、今までは出来ませんでした。なのでこれを" " で囲みます objWshShell.Run "strDrv" しかしこうすると、strDrvと言う文字列を起動しようとしてしまい、strDrvが変数として扱われず 単なる文字列として扱われるため動作しません。 objWshShell.Run ""strDrv"" として、"をエスケープしてみてもだめ〜 とか考えてたら strDrv = strCurrent & "driver\install.bat" strDrv = """" & strDrv & """" WScript.Echo strDrv objWshShell.Run strDrv これでいけました。最初の"が文字列の開始、 中2つの"が 文字列としての純粋な"を表し (""で"を単なる文字列としてエスケープ)、最後の"が文字列の終了を表すダブルクォート・・・ 結局 """" となり、非常に分かりにくいというか、混乱する形になったのですが、こんなもんなんでしょうか?
715 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 14:47:54 ] こんなもんです
716 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 16:13:45 ] >>714 Python がお勧め
717 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 16:15:22 ] strDrv = Chr(18) & strDrv & Chr(18)
718 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 17:42:26 ] >Set f = fs.GetFolder(".") >objShell.Run f.path & "\script\var.bat" objShell.Run ".\script\var.bat"
719 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 18:10:32 ] >>716 >>712
720 名前:デフォルトの名無しさん [2008/02/11(月) 23:38:48 ] >>714 C言語やjavaだって "\"" みたいな、「たいへん分かりにくい混乱する表記」 になるから、こんなもんです。 もし、コードをスッキリさせたかったら、 Const QQ = """" strDrv = QQ & strDrv & QQ もしくは strDrv = Q( strDrv ) Function Q(ByVal str) Return """" & str &"""" End Function みたいな方法がありますよ。(自分は後者をよくつかう)
721 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 01:25:32 ] Chr(34)は?
722 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 07:40:18 ] "自分は後者をよくつかう"って、使えるの、それ?
723 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:41:25 ] うん
724 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 16:56:37 ] >みたいな コードはイメージです
725 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:18:12 ] >>724 実際のコードとは異なる場合があります。
726 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:24:57 ] >>722 使えない
727 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:32:48 ] 使わない
728 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 23:43:08 ] 使われない
729 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:07:38 ] こんばんです。1つ質問させてください。 vbsでプログラムを組んでいるのですが、vbs親プログラムからvbs子プログラムを 起動は出来ないのでしょうか? 〜〜〜〜〜vbs親プログラム内〜〜〜〜〜〜〜〜〜 Set objWshShell = WScript.CreateObject("WScript.Shell") strCmdLine = "sub_program.vbs str01 str02 " objWshShell.Exec(strCmdLine) この記述で「sub_program.vbs」を引数2つ与えて起動できると思うのですが出来ません。 尚、コマンドプロンプトで[sub_program.vbs str01 str02]実行すると正常に起動します 修正点がありましたらお教えいただけないでしょうか。
730 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:16:04 ] >>729 strCmdLine = "cscript sub_program.vbs str01 str02 " または strCmdLine = "wscript sub_program.vbs str01 str02 " と記述する必要がある。 コマンドプロンプトでは、"たまたま" cscriptまたはwscriptが省略できる。
731 名前:729 mailto:sage [2008/02/13(水) 00:23:32 ] >>730 ありがとうございました。無事起動すること出来ました。 コマンドプロンプトでは"たまたま"省略可能なんですか・・・
732 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 07:49:15 ] という事はExplorerでアイコンをダブルクリックすれば起動するのも"たまたま"だね。
733 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 08:13:26 ] //H:でたまたまを切り替えられる。
734 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 09:19:40 ] どう考えても>>721 が正解
735 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 16:36:06 ] たまたまだけど、これもできる strCmdLine = "sub_program.vbs str01 str02 " objWshShell.Run(strCmdLine)
736 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:57:32 ] >>735 おまえ、何も解ってないな
737 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 00:12:08 ] そうだな、解るように言ってやれ
738 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 21:53:59 ] var fso= WScript.CreateObject("Scripting.FileSystemObject"); var d = fso.GetDrive(fso.GetDriveName("Q:\\")); if(d.IsReady){ ... とやってDVD-ROMドライブが準備できているかどうか調べているのですが、 DVDを入れて認識している最中にIsReadyが実行されるとウィンドウズ自体が数秒止まってしまいます バックグラウンドで動かしていてもフォアグラウンドアプリまで停止してしまうので困っているのですが これを回避するにはどうしたらいいのでしょうか?
739 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 22:14:09 ] FSOで問題あるときはShell.Applicationを使ってみるのが定石
740 名前:デフォルトの名無しさん [2008/02/16(土) 06:37:35 ] ドアラ グッドウィルドームに立つ! 再生:654,421 | コメント:123,256 | マイリスト:20,510 www.nicovideo.jp/watch/sm354359 凄い勢いで踊るドアラ 再生:482,525 | コメント:28,129 | マイリスト:17,837 www.nicovideo.jp/watch/sm1489303 ドアラが異端になった経緯 再生:424,284 | コメント:36,521 | マイリスト:9,417 www.nicovideo.jp/watch/sm378355 ドアラーズブートキャンプ 再生:241,338 | コメント:18,996 | マイリスト:7,229 www.nicovideo.jp/watch/sm409082
741 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:36:40 ] >>738 ドライブ認識動作中にエクスプローラとかでドライブにアクセスしても凍るから アクセスするタイミング悪いと凍るのは仕様じゃね? >>739 Shell.ApplicationにIsReadyはないけどな
742 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 17:20:40 ] Shell.Applicationで取れる情報で変化するものを見つければ?
743 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 16:30:09 ] Sub プロシージャとFunction プロシージャの違いって Function プロシージャが戻り値を返すのに対してSub プロシージャが値を返さないって言うだけですか?
744 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 16:51:11 ] End XXX Exit XXX がちがう
745 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 19:34:19 ] >>744 End Sub End Function が違うって言うのは分かりますし、Functionの場合のみ Function名 = 値 で値を返す事が出来る のも分かりますが(Javaで言うコンストラクタに値代入したらreturn文みたいな振る舞いすんのな) Exit Sub Exit Function というのがあるのですか?それはいったいどういう・・・? 単に終わらせるだけですか? 呼び出し元に戻りますか?
746 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:25:12 ] Javaなんかのreturnみたいにプロシージャの呼出元へ戻るだけ。
747 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:50:22 ] >>745 ヘルプも見れないのか
748 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:10:48 ] WSH(拡張子.vbsのファイル)で カレンダを表示するプログラムを作成しました。 出力はMsgBoxでしてます。 こんなかんじ MsgBox strResult, , "カレンダ" これを、携帯電話からも実行できるようにしたいと考えました。 携帯のカレンダがあるじゃないかと言われると困るのですが・・・ 便宜上カレンダと言っているだけで、実際は他の物を出力するので。 イメージ的にはカレンダというと一番伝わりやすいので・・・。 で、そのアイディアとして、サイト上に掲載すればいいと考えました。 携帯のブラウザからそのサイトにアクセスした際に.vbsで作ったのと同じような出力が 得られれば良いのですが、これを実現するのに簡単な方法は無いでしょうか? 今のところ私に考え付くのは JavaScriptを勉強してJavaScriptに書き直して やるぐらいかなぁと思っているのですが、そんな事しないとやっぱ出来ませんか? そうなると関数とか文法とかいろいろ勝手が違うでしょうから覚え直しですかね?・・。 .vbsファイルの出力のWeb版を作りたいみたいな感じです。よろしくお願いします。
749 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 22:16:13 ] 携帯もまだJavaScriptは実行できないぞ。 ASPと言って、Windowsサーバ上でVBScriptやJScriptをCGIのように実行する環境があった。 お前が欲しいのはきっとそれに違いない。 問題は、世間がASP.NETへ移行しつつあるということ。 ASP.NETはC#とかVB.NETとかを使うまた別物。
750 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:00:35 ] >>749 .vbsファイルを携帯に渡しても実行できるわけないし、じゃあ現状だと携帯でコレを実現 するのは難しいんでしょうか? 仮に携帯で実現するのが難しいとして、ブラウザに実装・・と言うか 第三者がWebブラウザでアクセスしてきた時に表示するようなのは JavaScriptになりますかね?
751 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:01:39 ] すれ違い よそへいけ
752 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:02:43 ] それって、なんか実行時に入力するパラメータあるんかな? ないんならタスクマネージャで定期的に実行して、 TXTかHTMLに出力したのをサーバに自動アップするような環境をつくって、 携帯でそれを見に行けばいいような気がするが。
753 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:12:23 ] >>752 おお!なんか凄いアイディア聴けた! えっとですね、1日に1回更新されるので、1日に1回実行してやればいいですね。 後はそれをTXT・・・には出来るのかなぁ・・・ ああ、そうか MsgBoxじゃなくてFileに出力 してやればいいんだ・・・ ああ、HTMLからそのTXTにリンクを貼るってのもありだし、 HTMLの中にそのTXTの内容を直接埋め込むのもありか!凄い!なるほど! ちょっと試行錯誤してみます。ありがとうございましたっ!
754 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:27:45 ] >>752 ありがとうございました! Dim objFso, txtFile Set objFso = WScript.CreateObject("Scripting.FileSystemObject") Set txtFile = objFso.OpenTextFile("hogehoge.txt", 2, True) txtFile.Write strResult txtFile.Close Set txtFile = Nothing Set objFso = Nothing こんなコードで生成できました!後はこの.txtファイルにHTMLでリンク貼れば完璧! 本当にお世話になりました〜
755 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 23:57:23 ] >>753-754 ただのテキストを吐き出すついでにHTMLにすればいいんじゃないの?
756 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:29:27 ] >>755 いやーそれが、やろうと思ったのですが、出来なくて・・・。 やろうと思ったらかなり大変だと思いますが、簡単に出来るもんでしょうか?
757 名前:756 mailto:sage [2008/02/20(水) 00:30:22 ] Replace strOutStrings, vbCrLf, "<br>" とかやって、改行を<br>に置き換えようとかやってみたんですが、うまくいきませんでした。
758 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:47:19 ] >>756 With txtFile .Write "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"" ""www.w3.org/TR/html4/loose.dtd "">" .Write "<html lang=""ja"">" ... End With こんな感じで書き出せばいいだけだろ。 >>757 そのテキストをpre要素の中に入れてしまうというのはどうだ?
759 名前:デフォルトの名無しさん [2008/02/20(水) 00:47:33 ] Dim objFso, txtFile Set objFso = WScript.CreateObject("Scripting.FileSystemObject") Set txtFile = objFso.OpenTextFile("hogehoge.htm", 2, True) txtFile.Write "<HEAD><TITLE>うんこやろ〜</HEAD></HEAD>" txtFile.Write "<BODY>" txtFile.Write "<CENTER>なんか文句あっか!</CENTER>" txtFile.Write "</BODY>" txtFile.Close Set txtFile = Nothing Set objFso = Nothing
760 名前:デフォルトの名無しさん [2008/02/20(水) 00:51:57 ] そういえばむかし、こんなんやってたな。 10 OPEN "INDEX.HTM" FOR OUTPUT AS #1 20 PRINT #1,"<HEAD><TITLE>ハナクソ</TITLE></HEAD>" 30 PRINT #1,"<BODY>" 40 PRINT #1,"<CENTER>うんこちんちん!</CENTER>" 70 PRINT #1,"</BODY>" 90 CLOSE #1 100 SYSTEM これを N88BASIC.EXE /T:RUN"HOGE.BAS" で定期的に動かして コンテンツを更新してた。 古きよき時代。
761 名前:756 mailto:sage [2008/02/20(水) 16:22:22 ] >>758 それやろうとしたんですが、HTMLファイル中の" を ""と置き換えないといけないのが面倒でした。 HTMLって意外と"を使いますし。 それに.txtファイルに出力してしまって HTMLからリンクを貼るだけの方がとても楽だったので・・。 それにしてもWithステートメントかぁ、ヘルプを見て初めて知りましたが、こんな便利なのが あったんですね。今までだったら txtFile. を何度も書かないといけなかったのに、これを知った おかげで完全修飾しなくてすむからもっとコードが楽にスッキリかけそうです。ありがとうございます。 >そのテキストをpre要素の中に入れてしまうというのはどうだ? これもまた素晴らしいアイディアだと思います。考え付きませんでした。 確かにそれなら簡単ですね。なるほどなるほど・・・。 しかしどうして>>757 のコードで 改行が <br> に置き換わらないのでしょうか? >>759 >txtFile.Write "<HEAD><TITLE>うんこやろ〜</HEAD></HEAD>" この行</HEAD>が2個あります。</TITLE>の間違いでしょうか(内側のHEAD) >>760 へぇ・・・そんな時代があったんですかぁ〜・・・。
762 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:34:20 ] Replaceは結果を戻り値に返すからこう使わないといけないはず。 strOutStrings = Replace(strOutStrings, vbCrLf, "<br>") ""がうざいのは、 ダブルクォーテーションではなくシングルクォーテーションを使うとか、 (属性はシングルでいい。でもDOCTYPEはわからない) 先頭(head要素が終わるまでくらい)をテキストに用意しておいて、 txtFileの頭にそれを書き出すとかでどう。 .Write objFso.OpenTextFile("c:\header.txt", 1).ReadAll
763 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 16:46:23 ] >HTMLって意外と"を使いますし。 ならJScriptつかえよ HTMLタグをつけるメソッドもあるし
764 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 17:58:02 ] >>763 DOMのことならVBScriptからでも使えるだろ。
765 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:18:23 ] Stringオブジェクトのことだろ
766 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 18:45:06 ] でもあまり使えるメソッドがないな
767 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 19:49:38 ] HTMLタグをつけるメソッドを付けた奴は、きっと浮かれ過ぎていたんだろうな。 後でcreat以上に恥ずかしい思いをしたに違いない。
768 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:09:23 ] JScriptだから好きなメソッドが追加できるよ .quote()なんてのもいいんじゃね
769 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 20:15:50 ] anchor(anchorString), big(), blink(). bold(), fixed(), fontcolor(colorVal), fontsize(intSize), italics(), link(linkstring), small(), strike(), sub(), sup() 確かに今更これらを使う気にならない