投稿日 | : 2004/02/03(Tue) 12:40 |
投稿者 | : おじん |
URL | : |
タイトル | : コマンドラインでコピーしたい |
ここでのサンプルを参考に下記のようにアレンジして実行しましたがうまくコピーされません。
1.このような使い方はできないのでしょうか?
2.複数ファイルをコピーしたいのですがファイル数の制限はありますか。コマンドの文字数かも?
3.また、実行後にDOS Windowを閉じる方法を教えてください。Shell (cmdTxt,0)でも?
よろしくお願いいたします。
'フォームで
Dim inP$
Dim inFile()
Dim outFile$
inP = "c:\my Documment\"
inFile = Array(inP & "小学校.dat", inP & "中学校.dat")
outFile = inP & "Test.dat"
If MultiFileCopy(inFile, outFile) = False Then
MsgBox "copy error" '失敗
Else
MsgBox "copy end" '正常
End If
'Moduleで
Public Function MultiFileCopy( _
inputFile() As Variant, _
outputFile As String) As Boolean
Dim n&, ret
Dim cmdText$ 'コマンド
MultiFileCopy = True '正常コピー
If inputFile(0) = "" Then
MultiFileCopy = False '入力がない
Exit Function
End If
'コマンドを準備
cmdText = "Command.com /c copy" & " "
For n = 0 To UBound(inputFile)
cmdText = cmdText & inputFile(n) & " + "
Next n
n = InStrRev(cmdText, "+")
cmdText = Left(cmdText, n - 1) & outputFile
ret = Shell(cmdText, 1) 'コピー実行
If ret = 0 Then MultiFileCopy = False '失敗
End Function
実行するとWindow画面が表示され、コマンドがディスプレイされることなく、
終了のプロンプトがでます。Exitを入力すると、VBに戻り、Copy endがmsgBox
されます。retの戻り値は0ではないということです。