[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 10/02 12:26 / Filesize : 234 KB / Number-of Response : 984
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

WSH(・∀・)スレッド! Part 2



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/

501 名前:デフォルトの名無しさん [2008/01/01(火) 13:01:20 ]
>>499
はいそのとおり。
バッチなら COPY *.TXT A:\ で済む、バイトの女の子さえミスしようがない超超超簡単なことさえ
WSHで書くとミスっちゃうだろ?
ミスの確立が増える。そういうこと。
だから、WSHがあればBATはいらない、などとイキガッテないでさ、適材適所で使い分けれ。

それにしても、超〜〜思うツボだな。わざとミスってくれたのかと思ったよ。
天然だったんだねw

502 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 13:08:20 ]
(ノ∀`) アチャー

503 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 13:10:06 ]
>ミスの確立が増える。
狙って書いてるのか?w

504 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 13:20:23 ]
天然だろ

505 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 14:11:33 ]
>>501
かんじで かくと みすっちゃう だろ?
いきがって ないで ひらがなで かけ。

506 名前:481 mailto:sage [2008/01/01(火) 14:35:00 ]
>>501
はい、今回WSHで書いて、確かにBatで書いた方が良い場面もある事を痛感しました。
WSHとBatを混合させると言うのはどうなんでしょうか?
Dim objWshShell
Set objWshShell = WScript.CreateObject("WScript.Shell")
objWshShell.Exec "copyFile.bat"

みたいな。でもこうすると処理が複雑になったときにbatとWSHと行き来するような事になると
なんかバグが出てきそう・・・。その時修正が大変じゃないですかねぇ・・・。
それに出来れば1つのスクリプトファイルで済ませたいし・・・

>>505
ワラタw

507 名前:デフォルトの名無しさん [2008/01/01(火) 15:02:00 ]
>>503-505
ネット初心者?

508 名前:デフォルトの名無しさん mailto:sage [2008/01/01(火) 16:08:59 ]
氏ね

それはこういうやつだろ。「確立」は単なる間違い。

>>506
バッチファイル内のCALLで他のバッチファイルを呼んだ方が解り易いかと。
基本バッチファイルで、足りない機能をWSHでフォローって感じで
書いていけばいいんじゃないかな。
無論、内部・外部コマンドが殆ど不必要なら、直接WSHで書いてしまえばいいし。

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でぐるぐる






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<234KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef