質問

QNo.1154829 XCOPY
質問者:yano-kouichi こんにちわ

クライアント数台(NT workstation)のローカルデータ
を、ファイルサーバ(2003)に自動保存(WSH)する処理
を行いたいと思っています。

処理概要は、クライアントのコンピュータ名と同じ
ディレクトリをファイルサーバに作成し、
そのディレクトリに、クライアントのデータを保存する
流れで考えています。

XCOPYでやる場合だと、保存先を変数では無理なのでしょうか。

WSHで成功できましたが、権限は引き継がれるのでしょうか?


Dim objFS
Dim objNetwork
Dim f

Set objNetwork = WScript.CreateObject("WScript.Network")
Set objFS = CreateObject("Scripting.FileSystemObject")

Set f = objFS.CreateFolder("C:\ " & objNetwork.ComputerName)

'objFS.CopyFolder "c:\test", "c:\ " & objNetwork.ComputerName

xcopy C:\test C:\ & objNetwork.ComputerName /e /v /q /h /k /o /x
困り度:
  • すぐに回答を!
質問投稿日時:
05/01/06 10:31
この質問に対する回答は締め切られました。

回答

ANo.3 >>これって、ログインスクリプトとして作成したWSHを動かすにはどうすればいいのかということを聞いているのですか?
>まさにその通りです。

自分で調べる癖をつけましょう。
山ほど出てきます。
http://www.google.co.jp/search?num=100&hl=ja&q=Windows+%E3%...

ちなみにWindowsでは「ログイン」ではなく「ログオン」なので、ログオンで検索しないと正しいものが出てこないです。


#引用記号のつけ方逆ですので直しました。


>処理概要は、クライアントのコンピュータ名と同じ

とのことですが、ADを構築しているのならサーバに、ワークグループ運用なら各PCにログオンスクリプトを設定することになりますが理解されてます?
回答者:taka_tetsu
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
05/01/06 18:51
この回答への補足各PCにログオンスクリプトを設定することは理解しております。
この回答へのお礼ほんとうに、いろいろとありがとうございました。
自力にて調べてみます。

回答良回答20pt

ANo.2 >これを、ログインスクリプトに実行させたいのですが
>具体的にどうすればよいか教えていただければ幸いです。

これって、ログインスクリプトとして作成したWSHを動かすにはどうすればいいのかということを聞いているのですか?

>この処理は、DOSプロンプト画面が出力されますが
>影響はないでしょうか?


ヘルプを読みましょう。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/...

1を指定しているので表示されています。
0にすれば表示されません。

>最後に、xcopyのオプションの意味を教えていただけないでしょうか。
>よろしくお願いいたします。

(^^;;
私はyano-kouichiさんが書かれたオプションをコッピってはっつけただけなんですけど。書かれた本人が知らないとは・・・

コマンドプロンプトで
xcopy /?
で自分で調べてください。DOSコマンドの常識です。
またはスタートボタンを押して出てくるスタートメニューにあるWindowsのヘルプから。
回答者:taka_tetsu
種類:補足要求
どんな人:一般人
自信:参考意見
回答日時:
05/01/06 16:19
この回答への補足これって、ログインスクリプトとして作成したWSHを動かすにはどうすればいいのかということを聞いているのですか?
>まさにその通りです。
この回答へのお礼ありがとうございます

回答

ANo.1 >XCOPYでやる場合だと、保存先を変数では無理なのでしょうか。

バッチファイルでXCOPYを起動する際に変数を使用する場合は環境変数を使うことになります。


>WSHで成功できましたが、権限は引き継がれるのでしょうか?

コピーではACL情報と監査設定は引き継がれません。なので、WSHからXCOPYコマンドを呼び出すのがいいかと。
そうすれば、変数ももっと簡単に使えます。

Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("xcopy C:\test C:\" & objNetwork.ComputerName & " /e /v /q /h /k /o /x" , 1, true)

こんな感じに。
回答者:taka_tetsu
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
05/01/06 14:31
この回答への補足ありがとうございます。

この処理を、ログインスクリプトの中で処理を
させるにはどうしたらいいのでしょうか。

あと、DOSプロンプト画面が出力されるのは、
ログインする際に、影響はでないのでしょうか。
この回答へのお礼成功しました。
ありがとうございます。


なんどもすいませんが、
これを、ログインスクリプトに実行させたいのですが
具体的にどうすればよいか教えていただければ幸いです。この処理は、DOSプロンプト画面が出力されますが
影響はないでしょうか?

最後に、xcopyのオプションの意味を教えていただけないでしょうか。
よろしくお願いいたします。