- 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/
- 509 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 17:08:23 ]
- >>478
リンク先の代替法はSendKeys使っててもひとつやね VBSファイル作って呼び出すのが確実
- 510 名前:デフォルトの名無しさん [2008/01/01(火) 20:18:13 ]
- >>506
おもしろい発想だけど、たとえばC言語でこんな・・・ main() { system("MKDIR \"C:\\Program Files\\MyApp\"") system("COPY *.* \"C:\\Program Files\\MyApp\""); system("ECHO インストールが完了しました。||PAUSE"); } こんなの書いて、「オレ、C言語でプログラムかいたおw。スゴイでそ!」 なんて言ったら笑われるだけ。他の言語でも同じこと。
- 511 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 21:54:49 ]
- C言語が使いこなせてるわけではないが
C言語でプログラム書いたというのは事実なわけだが
- 512 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 22:43:12 ]
- 笑われるのもまた事実というわけだ
- 513 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:32:04 ]
- JScriptのマクロ変数の値を出すことできる?
WScript.Echo(@if (@_Win32) 'Y' @else 'N' @end); はできても、 WScript.Echo(@_Win32); はできない
- 514 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 01:37:34 ]
- スレ違い
- 515 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:13:13 ]
- >>513
@変数は、JScript コードでは使えませんよ。 @setや@ifの中でしか使えない仕様です。 >>514 プログラム板で有名な基地害さんじゃありませんかw
- 516 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 02:53:29 ]
- >>513
@_win32じゃね? >>514 それ見ていつも思うけど 誘導先が書いてないんじゃ無意味なレスじゃね?
- 517 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 05:05:50 ]
- そうでもないか
- 518 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 12:01:50 ]
- >>510
ちょwwwwそれはないですwwwww さすがにそれはひどい・・・・。
- 519 名前:デフォルトの名無しさん [2008/01/02(水) 15:06:44 ]
- で、ドライバがインストールされているかどうかで処理を分岐させることはWSHではどうすれば良いのでしょうか?
- 520 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 15:10:57 ]
- If Then Else End If
- 521 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 19:17:49 ]
- >>520
いや、その構文を使うのはわかるけど、 If の後に書く内容ですよ。 どういう風に書いて真偽を返させればいいのかが全く検討がつきません。 If ドライバがインストールされている Then MsgBox ドライバインストールされてるよ〜 Else MsgBox ドライバインストールされてないよ〜 End If の"ドライバがインストールされている" と言う判定をどう書けばいいのかをお聞きしています。
- 522 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 19:27:25 ]
- インストールされた状態とされていない状態の差分を調べろ。
レジストリでも覗いとけ。それ以上はこのスレの範囲外。
- 523 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 20:45:49 ]
- ・複数のバイナリファイルの文字列を置換したい。
・置換リストを作って置換したい。 ・CUIでもいい。 これらを実行したい場合は、WSHで出来ますか?
- 524 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 21:27:49 ]
- >>523
WSHとCOM(標準のものだけで事足りる)で出来ますよ
- 525 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:11:30 ]
- バイナリはpowershellのほうが楽
- 526 名前:デフォルトの名無しさん mailto:sage [2008/01/02(水) 22:30:03 ]
- >>524
COMとはCOMMAND.COMのことですか? >>525 win2kは未対応のようで、うちでは使えません。
- 527 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 05:08:06 ]
- よくActiveXコントロールの事
ActiveXって言う人いるよね。 もちろんActiveXが何かは殆どわかってない人が多い
- 528 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 12:46:44 ]
- 特撮ヒーローの名前だ間違いない
- 529 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:09:38 ]
- >>526
win2kではCMD.EXEだな
- 530 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:22:51 ]
- WSHでバイナリは読めても書くのが大変だから、PowerShell使え
win2kでも誤魔化せば使えるらしい
- 531 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:38:06 ]
- つVBA
- 532 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 16:57:36 ]
- >>529
そういうボケはいらん COMコンポーネントだろ
- 533 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:05:17 ]
- そういうボカシタ話はいらん
具体的なProgIDを書け しらんなら書くな
- 534 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:32:01 ]
- CreateObjectすんのにProgIDとか使わんがな
- 535 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:40:10 ]
- ProgID使わないでどうやってCreateObjectするんだよ。
っていうかググればADODB.Stream使うってすぐ出て来るよね。
- 536 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 17:42:03 ]
- ADODB.Streamにバイナリ書き込むのが面倒だって
- 537 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 18:18:04 ]
- WSHでも理論上はできそうだな。
俺は面倒臭がりだからC#で書くけど。
- 538 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 20:22:49 ]
- >>522
レジストリを覗く・・・それぐらいしか手が無いとは・・・・OTL
- 539 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 20:55:40 ]
- >>538
WSHはそういうもの 痒いところに手を伸ばすにはダルシムレベルの修行が必要
- 540 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 22:37:30 ]
- wmi
- 541 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 00:19:04 ]
- 残念ながらそれはハズレだ
- 542 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 03:12:15 ]
- >>539
別にWSHがそうだから、 とかいう問題じゃなくね?
- 543 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 10:01:01 ]
- きっとWSH以外ならもっと簡単な方法があるんだろう
僕にもその方法を教えてください
- 544 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 11:46:40 ]
- そういえばWindowsXPの「プログラムの追加と削除」ってHTAじゃなかったっけ
- 545 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 14:37:11 ]
- WSHでアイドル時の検出とか出来ませんか?
Windowsのタスクスケジューラでアイドル時検出試してみたのですが とりあえず1分アイドル時間が続いたら hoge と表示してpauseしてそれから終わらせるスクリプト をスケジュール登録してみたのですが、 負荷が小さい処理、例えばメモ帳に文字列を 打ち込んでいたり、こうやって2chを見たりしていると、操作しているからアイドルではないのですが CPUから見るとアイドル状態なので、スケジュールが実行されてしまいます。 やりたい事は パソコンを切るのをしょっちゅう忘れる愚息のパソコンに仕込む事による 省エネ対策です。 1時間以上パソコンを全く触ってないならshutdownさせると。 しかし先ほど述べたように1時間以上2chを見てたりネットサーフィンしている状態だと 操作しているにも関わらずアイドル検出されてしまってシャットダウンされてしまうのでダメです。 MSNメッセンジャの「退席中」表示みたいな、指定時間全くマウスもキーボードも操作しなかったとき (Inputが全く無い時)にスクリプトを発動させたいのですが、WSHでアイドル時間を取得できませんか?
- 546 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 14:40:42 ]
- コントロールパネルの電源オプションでよくね?
- 547 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 14:41:16 ]
- 電源管理使えよ
- 548 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 15:08:21 ]
- レスありがとうございます。
電源オプションのプロパティ ウィンドウを見てみましたが、シャットダウンがありません。 まぁ休止状態で代用してもいいかな?とは思いますが システム休止状態 の所の 1時間後 にすると、アイドル時間(CPUがアイドルではなく ユーザによるマウスやキー入力が一切無いアイドル)が1時間経ったら勝手に休止になる のでしょうか?スレチ?
- 549 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 15:13:03 ]
- システム休止状態1分で 何もせずに2chブラウザだけ立ち上げた状態で
放置してみましたが、休止状態になりませんでした。 これじゃダメなようです・・・・
- 550 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:38:59 ]
- コントロールパネルの電源
休止状態でOK
- 551 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 02:46:07 ]
- CPU使用率がとれるとかとれないとか
- 552 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 02:49:11 ]
- あとDATが定期更新されてるんじゃね
- 553 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 20:52:09 ]
- HTMLファイル内にWSH(拡張子.vbs)を埋め込んで、ブラウザから機能を実行する事は出来ませんか?
WSH HTML 等で検索してみたのですが、イマイチそういうことを紹介しているページが 見つかりません。 もしくは.vbsファイルの内容をテキストコピーして、 HTMLファイル内に貼り付けて そのコードを実行させるとかそういうことは出来ませんか?
- 554 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:02:44 ]
- ???良く分からないんだけど、HTAみたいなのを望んでるのかな。
とエスパーしてみる。
- 555 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 21:09:43 ]
- ちなみに、WSH関係なく単にVBScriptを書きたいだけなら、
JScript同様、script要素の中に書けるぞ。現状ではIE限定になるが。
- 556 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:39:11 ]
- できません。そんなことできたらずぼずぼの脆弱性だ
- 557 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:48:54 ]
- >>555
<script language="VBScript"> <!-- MsgBox "ハロー" <--! </script> ↑みたいな感じでHTMLで実行させる事についての詳細が知りたいのですが、 >>556が言っているように出来ないのでしょうか? ブラウザでそういうことしたいならJava Scriptとか書くしかないのでしょうか? でも >>555はできるって言っているし、どういうことなのん???
- 558 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:57:03 ]
- それはWSHではなく、VBScriptだろ
- 559 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:03:41 ]
- >>553
>WSH(拡張子.vbs) このあたりに勘違いを感じる
- 560 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 23:47:11 ]
- >>557
それくらいは555に書いてあるとおり可能。languageよりtype使えな。 >>556 ネットワーク上に置いてあれば、 FileSystemObjectなどはセキュリティゾーンに従って制限を受ける。 JScriptで自由に使えたXMLHTTPなどはVBScriptでも同様に使える。 いずれにせよWSHは関係なくスレ違い。よそ行け。
- 561 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 03:55:36 ]
- WSHとIEは一応は別物
が、実際にHTMLでVBScriptが使用される事はまず無い。 VBとVBSも当然違うので VBSの話がまともに扱われるのは ここかお前らスレかHTAスレぐらいのものだろう WSHもIEもHTAもスクリプトが実装されているモジュールは 完全に同一の物。 WSHのマニュアル、と言われているものも実際には 必ずしもWSHのマニュアルではなくWindowsスクリプト、 についてのマニュアル
- 562 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 05:30:06 ]
- 残念、ハズレ
- 563 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 09:31:30 ]
- >>553 >>557
VBScript HTML で検索したらいいと思うよ。 既に言われてるようにWSHは関係ないので WSH HTML では見つからないでしょ。
- 564 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 12:34:40 ]
- unko deta
kimochi ii
- 565 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:45:03 ]
- レジストリエディタを起動すると右側に"名前", "種類", "データ" と標示されますよね。
指定したレジストリキー以下の"名前"を全てフルパスで返して欲しいのですが どのように記述すれば良いのでしょうか? Set objShell = WScript.CreateObject("WScript.Shell") ret = objShell.RegRead("HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\VIDEO\*") のようにしても、VIDEO\ 以下の名前の部分のパスは帰ってきませんでした。(何も帰ってこない) かといって 最後の * を削除しても結果は同じで何も帰ってきませんでした。 On Error Resume Nextを上のほうに書いてあるからエラーにはなりませんが・・・。 やりたい事は、それによってフルパスが得られるなら、For Each文で全てのデータを覗いて 指定した文字列が含まれているかどうかをInStr関数等で検索すると言う事です。 よろしくお願いします。
- 566 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:53:22 ]
- >>565
ワイルドカード使えるなんて何処に書いてある? ワイルドカードは使えないのが基本で、使えるメソッドにはその旨書いてある物だ 勝手に都合の良い仕様を妄想するな 君のやりたいことを実現するにはWMIを使えば良い 但し、ここはWSHのスレであって汎用コンポーネントのスレではないので後は自分で調べること と言っても情報は腐るほどあるからググれば簡単に解決するけど
- 567 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 19:59:33 ]
- >>566
WSH厨ってなんでそんなに偉そうなんだ? そのくせ関係ないスレに聞かれても無いスクリプト張りまくったりして気持ち悪いな。
- 568 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 20:04:29 ]
- 汎用コンポーネントもこのスレでいいだろ
どうせ使うんだから
- 569 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 20:08:50 ]
- 文句言うだけでサンプルコードのひとつも貼らない君等も同類だと気付いてる?
- 570 名前:567 mailto:sage [2008/01/06(日) 20:14:40 ]
- ?
回答なら566で十分だろ? 俺はただ566が気持ち悪いって書きたかっただけだ。 同類にされたかないね!
- 571 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 20:26:49 ]
- ゴメン、それ以下だったようだねw
- 572 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 20:34:23 ]
- 教える側はさぞ自分のほうが頭がいいと思い気持ちよくなる。
教えられる側はその代償に回答をもらう。 いいんじゃね? モレだったら表面上では偉そうな態度取らんが、それは人それぞれ。
- 573 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 20:39:56 ]
- >>572
恥ずかしくならない?
- 574 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:12:33 ]
- >>573
モレは恥だと思うから、 >モレだったら表面上では偉そうな態度取らんが、それは人それぞれ。 って事ね。
- 575 名前:デフォルトの名無しさん [2008/01/06(日) 22:13:47 ]
- >>566 は氏ねばいいと思いま〜〜す。
- 576 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 22:25:42 ]
- >>574
そういうの偉そうに書いちゃうのは恥ずかしくないの?
- 577 名前:565 mailto:sage [2008/01/06(日) 23:12:00 ]
- 私が初歩的な質問をしてしまったばかりにスレが荒れてしまっているみたいで
申し訳ありません。 一応自己解決したので参考までに私がとった手段を書いておきますね。 WMIと言うのは一応調べてみたのですが、イマイチよく分からなかったので WScript.CreateObject("WScript.Shell").Exec を使って reg.exe を呼び出す事で処理しました。 reg query キー とやると、指定したキー内の"名前", "種類", "データ"が全て列挙されるので 1行1行InStr関数にかけて目的のレジストリデータが存在するかどうかを調べる手段を 取りました。一瞬コマンドプロンプトの画面が立ち上がってくるのがちょっと気になりますが これなら私にもかけました。 アドバイス下さった方、ありがとうございました。
- 578 名前:デフォルトの名無しさん mailto:sage [2008/01/06(日) 23:24:39 ]
- >>576
楽しそうだね。
- 579 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 00:07:34 ]
- >>577
msdn2.microsoft.com/en-us/library/aa393664(VS.85).aspx www.microsoft.com/japan/technet/scriptcenter/scripts/os/registry/default.mspx
- 580 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 12:33:33 ]
- >一瞬コマンドプロンプトの画面が立ち上がってくるのがちょっと気になりますが
出てこなくする方法もあるけど それが出ないのが気に入らないっていうひともいるだろうね
- 581 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 13:08:42 ]
- >>580
おお、そうなんですか?参考までに出てこないようにする方法を教えて頂けませんか? IEの場合は objIE.Visible = False すれば見えなくなりますが、コマンドプロンプトの場合どうするんだろう・・・
- 582 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 16:36:53 ]
- cmd /?
- 583 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 01:46:31 ]
- >>562
どれをハズれと言ってるのかよくわからんのだが まああれだ。 MSがいくら宣伝しても VBSを使ってる人間は少数派。 というかもはや滅亡の道を歩んでおる VBS < 壁 < javascript .NET < 壁 < java パワーシェル < 壁 < Perlなど って事だ。 将来性を考えるんなら>>557もVBSはスルーして JSにしときな
- 584 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 02:24:01 ]
- でもな、VBSのほうが断然早いんだ。特に配列。
たまにByRef受け取りなパラメータもあったりするし。
- 585 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 04:32:21 ]
- fsoで移動先に同名フォルダがある場合について質問です。
c:\test\test というように同じフォルダ名で入れ子になっている環境で、 explorer上でc:\test\testを切り取り、c:\test内で貼り付けて上書きすると 二つのフォルダ内容が融合されますが、これをfsoで実現しようとしています。 Moveは移動先に同名アイテムが存在していてはダメということなので、 まずc:\test\testの中身を先にc:\testに移動させ、 c:\test\testが空になったら削除する。 この際に、 c:\test\test\foo.txt c:\test\foo.txt というように移動先のフォルダに同名ファイルが存在した場合、 まずc:\test\foo.txtを削除し、c:\test\test\foo.txtをc:\test\foo.txtに移動させる。 さらに同名フォルダの場合はそれぞれについて再帰的に処理していく。 というような手順を踏まなければならないのでしょうか? もっとシンプルな方法があるなら教えてくれませんか?
- 586 名前:デフォルトの名無しさん [2008/01/08(火) 05:09:32 ]
- >>585
質問は日本語でおねがいします
- 587 名前:デフォルトの名無しさん [2008/01/08(火) 07:09:21 ]
- モールスぬるぽ銃乱射 www6.ocn.ne.jp/~miz2/morse.htm
1TGBIT ガッガッガッガッドガガッガッ!!!!! >z/':y★r” ドガガガガガッ ∴ ∧変∧ ル%#*゚∀)___。 \从/ _ _ _☆_ _★∴*.`Д´)/ ノハ つ∞【〔ロ=:(∈(二(@ >‐― ‐★‐―☆∵*;:*; / ∧★∧ (*゚∀゚)φ――・ ・― ― ―・・― ・・―→ (モールスでガッ!)
- 588 名前:604 mailto:sage [2008/01/08(火) 07:47:55 ]
- >>585
CopyFolderとかなら上書きに関するパラメータがあるみたいだけど。 なんでMoveにはないのかね?
- 589 名前:604 mailto:sage [2008/01/08(火) 07:49:08 ]
- 未来からきてすみません
- 590 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 08:23:31 ]
- >>583
残念ながらハズレです
- 591 名前:585 mailto:sage [2008/01/08(火) 13:46:21 ]
- >>586
(´・ω・`) >>588 なんでですかねー? >Moveの上書きパラ CopyFolderの場合はあくまでCopyなので、後でコピー元を削除するとしても、 一時的に同一アイテムが階層違いで存在してしまうことになってしまいます。 この方法だとサイズの大きいアイテムのときに問題が出てきます。 となると、移動先の同名アイテムを先に削除してから移動させる、 という選択肢しかなくなってしまうと思うんです。 しかしそれがどう考えても複雑な処理になってしまう。 みなさんどうやってるんですか?
- 592 名前:デフォルトの名無しさん [2008/01/08(火) 14:18:12 ]
- CopyFolder には上書きオプションがあって
Move には無い。 どこか抜けてるところが、いかにもマイクロソフトらしい。
- 593 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 14:31:42 ]
- moveは内部renameなのでrenameに上書きがないから
- 594 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 15:01:03 ]
- >>591
ShellオブジェクトのFolderオブジェクトを使えばできた。 以下、"F:\temp\test\test"を"F:\temp\test"へ上書きするサンプル。 Set objShell=Wscript.CreateObject("Shell.Application") set objFol = objShell.NameSpace("f:\temp") call objFol.MoveHere("f:\temp\test\test", &H10)
- 595 名前:585 mailto:sage [2008/01/08(火) 15:54:53 ]
- >>594
動作確認できました。 ありがとうございますm(_ _)m しかしこのMoveHereって移動エラー発生時点で処理が中断されるっぽいですね。 スキップさせるにはやっぱり自分で書くしかないですね。 MoveHere.VBS www.vector.co.jp/soft/winnt/util/se377243.html けっこうみんな苦労してるっぽい www.roy.hi-ho.ne.jp/mutaguchi/bbs/list121.shtml
- 596 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:15:45 ]
- >>595
FolderItemオブジェクトのInvokeVerb使って、 "切り取り(&T)"して"貼り付け(&P)"という手もあると思いますが・・・。 まあ、エラーが出れば止まるのは同じでしょうね。
- 597 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:46:24 ]
- shellのmoveはcopy+deleteだから
- 598 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 16:52:30 ]
- fsoで
if folderexists then deletefolder movefolder がいいんじゃないの on error使ってもいいけど
- 599 名前:585 mailto:sage [2008/01/08(火) 17:26:35 ]
- >>596
それって裏でMoveHereが動いてるのでは? >>597 そのようですね。いろいろ実験してると分かりました。 >>598 それだとフォルダとフォルダのマージにはならないような。 移動先のかぶってないファイルも削除されてしまう。
- 600 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 17:29:09 ]
- movefileでぐるぐる
- 601 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:50:28 ]
- > まずc:\test\foo.txtを削除し、c:\test\test\foo.txtをc:\test\foo.txtに移動させる。
> さらに同名フォルダの場合はそれぞれについて再帰的に処理していく。 ファイル名とフォルダ名が同じだったらどうするんだろ
- 602 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 21:58:05 ]
- すきにしてくれ
- 603 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 22:24:30 ]
- つrobocopy.exe
- 604 名前:585 mailto:sage [2008/01/09(水) 06:53:12 ]
- >>601
そのへんは考えてあります。 MoveHereの標準動作を見ると 移動先に同名アイテムがない → 移動 移動元:ファイル → 移動先:ファイル → コピー先削除 → 移動 移動元:ファイル → 移動先:フォルダ → エラー(中断) 移動元:フォルダ → 移動先:ファイル → エラー(中断) 移動元:フォルダ → 移動先:フォルダ → マージ(再起処理へ) ということみたいですが、 ファイル-フォルダ、フォルダ-ファイルの場合の中断は問題があるので ダイアログでも出すか、スキップするかで対応。
- 605 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 16:41:28 ]
- cronNTで動かすスクリプトはネットワーク上のファイルにはアクセス出来ないのでしょうか?
var objFSO = new ActiveXObject("Scripting.FileSystemObject"); WScript.Echo((objFSO.DriveExists("\\\\Server\\SharedDocs")).toString());; というスクリプトをcronNTで動かした場合、falseになります。
- 606 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 18:12:05 ]
- DriveExists?
- 607 名前:デフォルトの名無しさん [2008/01/09(水) 20:35:09 ]
- >>605
それ、cronNTじゃない環境では動くの?
- 608 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 23:44:50 ]
- >>606
ttp://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/jsmthdriveexists.asp >>607 コピペミスで2行目に ; が1個余分に付いてしまったorz foo.js というファイル名で保存して、コマンドプロンプトから cscript で実行させれば動きます。 共有フォルダに置いてあるDLL(AutoItX3.dll等)を regsvr32 した後、スクリプト中で ActiveXObject() して使おうと思い、コマンドプロンプトからの動作確認ではうまく動いたので cronNT に起動スケジュールを書いておいたら動いてはくれず、色々と調べていたら 共有フォルダへのアクセスに失敗している事が分った次第です。 もし、cronNT が原因で他の類似ソフトでは再現しない問題なら他に良い物が有れば それに乗り換えようとも思ってます。 ただ、VMware Player の中で動かしている都合 (無料版はディスクイメージの容量を後から大きくするツールが付属しない)で、 しかも既に残り容量にも余裕が全く無い為、 Windows Services for UNIX Version ttp://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=896C9688-601B-44F1-81A4-02878FF11778#Overview の様なのでは無く、もっと軽い物でないと無理です。
- 609 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 01:57:32 ]
- cronNT類似とか関係なく、例えばWSHとかHTML, HTAなど
他のActive Script実行環境でやるとどうなるか試してみろ。
|
|