DOSのXCOPYコマンドでのコピーをするには?

解決


SG16  2006-02-03 04:07:57  No: 130017

VBスクリプトでDOSのXCOPYコマンドでTXTファイルにあるリストのコピーをするべく
下記のようにしてみたのですが、うまくいきません。
皆様方にご教示いただきたいです。

'bk.vbs

'変数定義
sp = chr(32)      '半角スペース
dq = chr(34)      '”記号
en = chr(92)      '\記号
dest = "F:\Backup"    'バックアップ先の親フォルダー
dt = replace(Data,"/","")  '現在の年月日

'ファイルシステムオブジェクトを作成
Set FS = CreateObject("Scripting.FileSystemObject")

'シェルオブジェクトを作成
Set WS = CreateObject("WScript.Shell")

'リストファイルが存在しなければ終了
If Not FS.FileExists("F:\list.txt")Then
  MsgBox("バックアップリストファイルがありません。")
  WScript.Quit
End If

'リストファイルを開く
Set Txt=FS.OpenTextFile("F:\list.txt")

'リストファイルの内容を1行ずつ読み込んで処理
Do Until Txt.AtEndOfStream    'ファイルの末尾まで繰り返す
  u = Txt.ReadLine    '1行読み込む

  'コピー元パスを"でくくる
  srcpath = dq & u & dq

  'コピー先パスの文字列を生成
  dstpath = dest & en & dt    'F:\Backup\年月日
  dstpath = dstpath & en & Left(u,1)  'F:\Backup\年月日\ドライブ
  dstpath = dstpath & Mid(u,3) & en  'F:\Backup\年月日\ドライブ\パス\
  dstpath = dq & dstpath & dq    'コピー先パスを"でくくる

  '「xcopy/e/y/dコピー元パスコピー先パス」を実行
  WS.Run"xcopy/e/y/d"&sp&srcpath&sp&dstpath
Loop
Txt.Close        'ファイルを閉じる

'終了メッセージ表示
MsgBox("すべてのバックアップが終了しました。")


出掛けに一筆  2006-02-03 07:13:39  No: 130018

dt = replace(Data,"/","")    '現在の年月日
いきなり出てくる、  Data ? -> Date ? 
すいません。たぶん誤爆


無題  2006-02-03 21:39:31  No: 130019

どの行でなにがどうエラーでるかくらい書きませう
うまくいきませんでは何も伝わらない
解答者に対して不親切ではありませぬか?


SG16  2006-02-04 05:05:40  No: 130020

皆様、ご迷惑をお掛けし申し訳ありません。
「出掛けに一筆」様よりいただきましたご指摘は、
私の単なる打ち間違いです。「Data」は誤りでした。
エラーの内容ですが、
行:39
文字:2
エラー:指定されたファイルが見つかりません
コード:80070002
ソース:(null)

という表示がされております。
私の表現があまりにも足りず、ご迷惑をお掛けし、深くお詫び申し上げます。
それと、参照している(はずの)TXTファイルにはバックアップするファルダの
フルパスが1行のみ記述してあります。

管理人様へ
私の責めにより、貴重なスペースを無駄に使用しているとしましたら、
誠に恐縮ですが、削除をお願いします。
なにぶん勉強不足な身で、安易に質問したことを心よりお詫び申し上げます。


葉月α  2006-02-07 18:18:22  No: 130021

デバッグをもっとしっかりやりゃぁいいんじゃねぇの?

コピー元のファイルが存在しないんでしょ?
コピー元ファイルに何を設定するか毎回表示するようにして
本当にそのパスであってるか確認すれば解決するような気もしますが・・・

それくらいのことはやりましたか?
またファイル名を指定して実行やエクスプローラのアドレス等にそのパスを直打ちしたら動きましたか?


SG16  2006-02-07 22:01:40  No: 130022

レスありがとうございます。
「葉月α」様よりご指摘のありました、
アドレスバーからのコピー貼り付けや、
ショートカットを作ってそのリンク先アドレスのコピー貼り付けも
スレッドを立てる前にやりました。
でもダメでした。


123  2006-02-07 22:24:07  No: 130023

WS.Run"xcopy/e/y/d"&sp&srcpath&sp&dstpath

xcopyのあとにスペースを1つ入れてみたら


葉月α  2006-02-07 22:45:45  No: 130024

順序が逆な気がする
"xcopy/e/y/d"&sp&srcpath&sp&dstpath
を表示なりファイルに書き出すなりする
楽をするならメッセージボックスだがコピペ出来ないので
テキストファイルへの書き出しが望ましい

それをコマンドとして正しいか目視確認後、コピーしてDOSで実行する
DOSでファイルが見つかりませんという応答が返ってくるのがこの場合普通かな?

あとは
アドレスバーから貼り付けるのではなく
アドレスバーに貼り付ける・・・が私の言いたいこと
ファイルが存在するならそのままエンター叩けばファイルを実行するはずということ

また上記確認より
123さんの言ってる事も確認できるはず

今回の場合まず文字列が正常か?というところから確認するのがいいかと・・・
あとは〜そうだねぇ
WS.Runの後に半角スペースとか・・・
WS.Run"xcopy/e/y/d"&sp&srcpath&sp&dstpath

WS.Run "xcopy/e/y/d"&sp&srcpath&sp&dstpath


葉月α  2006-02-07 22:49:38  No: 130025

連投すまん・・・
XCOPYのヘルプ見たら

XCOPY 送り側 [受け側] [/A | /M] [/D[:日付]] [/P] [/S [/E]] [/V] [/W]
                      [/C] [/I] [/Q] [/F] [/L] [/H] [/R] [/T] [/U]
                      [/K] [/N] [/Z]
                      [/EXCLUDE:ファイル1[+ファイル2][+ファイル3]...]

となっているが大丈夫かな?


葉月α  2006-02-07 22:52:48  No: 130026

だめだめな私・・・
上記書式(HELPに関して)はまったく問題ないですね
ごめんなさい


もげ  2006-02-08 00:11:50  No: 130027

ちょっと、視点をかえて...
>行:39
>文字:2
>エラー:指定されたファイルが見つかりません
>コード:80070002

これは、具体的には、どの行を指していますか?

このエラーが出てるなら、VBScript上のエラーの気がします。
XCOPYのコマンドラインでのエラーならVBScriptのエラーにならないんでは?
ひとつの可能性としては、XCOPY.EXEが見つからない(パスが通っていない)
ということもあるかも。

実際にそれを動かしているOSは何ですか?
DOS窓でXCOPYが実行できますか?
そのVBScriptはどうやって実行していますか?
手打ちじゃなくて、そのスクリプト全文をコピペしてほしい気がしますが。


もげ  2006-02-08 00:30:09  No: 130028

ちなみに、
createobject("WScript.Shell").Run("xcopy/e/y/d aaaa")
はエラー(ファイルが見つかりません)
createobject("WScript.Shell").Run("xcopy /e/y/d aaaa")
はOK(エラーにならない)。
DOS窓で、
xcopy/e/y/d aaaa
はOK(エラーにならない)。


SG16  2006-02-08 01:26:27  No: 130029

解決しました!!
xcopyのあとにスペースを1つ入れてみたら
見事に実行されました。
レスいただきました皆様、
本当に、本当にありがとうございました。
私のようなド素人のスレッドに
このようなご指摘・ご教示をいただき
本当になんて言ってよいのか・・・
本当にありがとうございました。
私ももっともっと勉強して、
皆様方のように一日も早くなれるよう
精進したいと思います。
本当にありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加