こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

vbsより実施のdosコマンド(xcopy)について教えてください。

何方かご教授頂けませんでしょうか。
1.E:→C:へ特定のDir/Fileコピーを作成したい。
2.特定のDir/Fileは、入力リストにFilePathが行単位で記述される。
3.C:にはE:と同様なDirが存在するものもある。
4.VBSは入力リストを行単位で読み込み、BATファイルへpathを渡す。
5.コマンド発行→コマンドより戻り値→VBS→コマンド発行→・・・
 と出来ればさせたいです。(この部分どうしてよいものか?)

VBS---
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objWsh = WScript.CreateObject("WScript.Shell")
inFL = objFso.GetAbsolutepathname("pathlist.txt")
inBAT = objFso.GetAbsolutepathname("xcopy.bat")
Set objin = objFso.OpenTextFile(inFL,1)
Do While objin.AtEndOfStream <> True
inline = objin.readLine
inpath = "E:"&inline
outpath= "C:"&inline
objWsh.Run(inBAT&" "&inpath&" "&outpath)
Loop

bat---
echo F|xcopy /Y %1 %2

pathlist---
\temp\temp1\a.xls
\temp\temp1\b.xls


上記、VBSを実行させた結果は
---
C:\temp>echo F | xcopy /Y E:\temp\temp1\a.xls C:\temp\temp1\a.xls
C:\temp>echo F | xcopy /Y /Y E:\temp\temp1\a.xls
C:\temp>echo F | xcopy /Y /Y /Y
  ~ 繰返し
---
現状、DOS窓の中、コマンドが繰り返され止まりません。
何方か、「コマンド発行→コマンドより戻り値→VBS→コマンド発行→・・・」、Dir/Fileのコピーがpathlist行単位に行えるようご教授頂けませんでしょうか。
何分初心者なので、拙い文章、ご容赦願います。

投稿日時 - 2009-04-05 12:53:32

QNo.4854470

困ってます

質問者が選んだベストアンサー

バッチのファイル名を、XCOPY.BAT にしているのが原因です。
そのため、その内部に書いてある XCOPY は、システムのXCOPY.EXEじゃなくて、XCOPY.BATを呼び出してしまっています(再帰呼び出し)。

バッチファイル名を変えましょう。
あるいは、ファイル内のXCOPYをXCOPY.EXEと書く。

投稿日時 - 2009-04-05 13:23:51

お礼

notnotさん、有難うございます。
BATからの戻り値をVBSへ引渡し、調べている所へ回答が入って
いたので正直ビックリしました。
こんなに早い回答を頂きまして、感謝致しております。
結果は、Dir/File共に、思い通りコピーが出来ました。
有難うございます。

投稿日時 - 2009-04-05 13:43:02

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問