dポイントプレゼントキャンペーン実施中!

的外れの質問でしたらすみません。

VisualStudio2005でクリックしたら下のようなバッチプログラムを動かすEXEを作成することは可能でしょうか?
COPY "D:\aaa" "E:\"

A 回答 (5件)

★最初に、ネットワークには詳しくありません。


・『COPY』コマンドに『/Z』のネットワーク・ファイルを再起動可能モードで
 コピーします。とヘルプにあるので『COPY /Z D:\aaa E:\network\direct』などと
 指定してみて下さい。もし出来れば『ラッキー』という事です。
・私は『COPY』コマンドでローカルからネットワークへのコピーを行ったことは
 ありませんし、出来るかどうかも不明です。上記の『/Z』で出来るか試して見て下さい。
・以上。おわり。
    • good
    • 0

まずUNCをZドライブとしてマウントしてCopyします。


WNetAddConnection2Aを利用します。(マイクロソフトのサイト参照)
1.マウント方法
Public Class Form1

Inherits System.Windows.Forms.Form
Private Declare Function WNetAddConnection2 Lib "mpr.dll" Alias "WNetAddConnection2A" (ByRef lpNetResource As NETRESOURCE, ByVal lpPassword As String, ByVal lpUserName As String, ByVal dwFlags As Integer) As Integer
Private Declare Function WNetCancelConnection2 Lib "mpr.dll" Alias "WNetCancelConnection2A" (ByVal lpName As String, ByVal dwFlags As Integer, ByVal fForce As Integer) As Integer
Private Structure NETRESOURCE
Public dwScope As Integer
Public dwType As Integer
Public dwDisplayType As Integer
Public dwUsage As Integer
Public lpLocalName As String
Public lpRemoteName As String
Public lpComment As Integer
Public lpProvider As Integer
End Structure
Private Const RESOURCE_CONNECTED As Integer = &H1
Private Const RESOURCETYPE_ANY As Integer = &H0
Private Const RESOURCEDISPLAYTYPE_DOMAIN As Integer = &H1
Private Const CONNECT_UPDATE_PROFILE As Integer = &H1
Private Const strUNC As String = "\\XXXX\......" rem UNCのパス

コマンドボタン4をクリック
Private Sub Button4_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim typNetResource As NETRESOURCE
Dim intRet As Integer
Dim pass As String
Dim user As String
pass = vbNullString
user = vbNullString

With typNetResource
.dwScope = RESOURCE_CONNECTED
.dwType = RESOURCETYPE_ANY
.dwDisplayType = RESOURCEDISPLAYTYPE_DOMAIN
.lpLocalName = "Z:" '空いている自ドライブ
.lpRemoteName = CStr(TextBox3.Text) rem コピー元パス

End With

intRet = WNetAddConnection2(typNetResource, pass, user, CONNECT_UPDATE_PROFILE)
If intRet = 0 Then
MsgBox("接続できました。")
Else
MsgBox("接続できませんでした。")
End If
End Sub

2.COPY (コマンドボタン1をクリック)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Hide()
Dim intFlag As Integer
intFlag = Shell(Environ("comspec") & " /c COPY " & CStr(TextBox1.Text) & " " & CStr(TextBox2.Text) & "
MsgBox(intFlag)
Me.Show()
TextBox3.Text = ""

Dim lngRet As Integer
lngRet = WNetCancelConnection2("Z:", CONNECT_UPDATE_PROFILE, True)
If lngRet = 0 Then
MsgBox("切断できました。")
Else
MsgBox("切断できませんでした。")
End If
Me.Close()
End Sub

3.切断(コマンドボタン3をクリック)
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim lngRet As Integer
lngRet = WNetCancelConnection2("Z:", CONNECT_UPDATE_PROFILE, True)
If lngRet = 0 Then
MsgBox("切断できました。")
Else
MsgBox("切断できませんでした。")
End If
End Sub
    • good
    • 0

#2さんの回答でおおむねあっています



DOBON.NET > プログラミング道 > .NET Tips > プロセス
DOSコマンドを実行し出力データを取得する
http://dobon.net/vb/dotnet/process/standardoutpu …

あとはパスを指定するときは「'(シングルコーテーション)」で括ればよいかと
※特にUNCパスを指定するときには
Dim psi As New System.Diagnostics.ProcessStartInfo()
psi.FileName = System.Environment.GetEnvironmentVariable("ComSpec")
psi.UseShellExecute = False
psi.CreateNoWindow = True
psi.Arguments = "copy 'd:aaa' 'e:\'"
System.Diagnostics.Process.Start(psi)
    • good
    • 0

System.Diagnostics.Process.Start("COPY D:\aaa E:\")


で良いのでは?
以上。

この回答への補足

System.Diagnostics.Process.Start("COPY D:\aaa E:\")
コピー先のE:\にネットワークでつながっているサーバのディレクトリを指定することは可能でしょうか?

可能であれば記述方法を教えてください。

補足日時:2007/03/20 20:45
    • good
    • 0

'VB.NETで話をする。


'事前にC:\hoge.batに
'ping 192.168.1.1>fuga.txt
'と書いておいた。
'参考 http://jeanne.wankuma.com/tips/process/start.html

Module Module1

Sub Main()

System.Diagnostics.Process.Start("C:\hoge.bat")

End Sub

End Module

'実行するとhoge.batが起動してC:\にfuga.txtという
'pingの結果のファイルが出来ているはず

'直接の回答じゃないが,ここまで書けば後はどうにでもなるよね?

この回答への補足

System.Diagnostics.Process.Start("C:\hoge.bat")
のカッコ内に直接コマンドプロンプトを記述したいです。

なぜかというとバッチプログラムをファイルとして持つと中の記述を見られるからです。

全然VBを知らないもので、おかしな補足になっていたら申し訳ございません。

補足日時:2007/03/20 19:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!