• 締切済み

DOSバッチファイルをvbsに移植したい

こんにちは。 vbsの質問なのでちょっとVBから離れるかと思いますが。 @echo off net use \\server1\Users xcopy "\\server1\Users\myname\work\genshi.xls" "C:\Documents and Settings\myname\デスクトップ\folder" /i /s net use /delete exit をvbsで書き表したいのですがわかりません。 どなたか移植していただけませんか。

みんなの回答

  • x415f484f
  • ベストアンサー率71% (57/80)
回答No.2

xcopy ということはディレクトリごとのコピーでしょうか? そうであれば、このようなコードで実現可能かと思います。 変数には必要な値を代入して下さい。 strPassword を strPassword="" としておくと入力を促す InputBox が出ます。 VBS でのみ書くとこのようにネットワークドライブとしてあつかうことになります。 ネットワークドライブに割り当てたくない場合はシェルを呼び出して「net use ...」とすることになります。 メッセージが邪魔な場合は「WScript.Echo」の前に「'」をつけてコメントにしてください。 ' Dim objNetwork Dim objFileSystem Dim strDriveLetter Dim strServerDirectory Dim strUserID Dim strPassword Dim strSourceDirectory Dim strDestinationDirectory ' -- account -- strUserID = "user" strPassword = "pass" strDriveLetter = "Z:" strServerDirectory = "\\server1\Users" strSourceDirectory = "\\server1\Users\myname\work\genshi.xls" strDestinationDirectory = "C:\Documents and Settings\myname\デスクトップ\folder" ' ------- If strPassword = "" Then strPassword = InputBox("Your password","Password") End If If strPassword <> "" Then ' create object Set objNetwork = CreateObject("WScript.Network") Set objFileSystem = CreateObject("Scripting.FileSystemObject") ' connect WScript.Echo "Connect: " & strDriveLetter & " = " & strServerDirectory objNetwork.MapNetworkDrive strDriveLetter, strServerDirectory, False, strUserName, strPassWord ' copy WScript.Echo "Copy: " & strSourceDirectory & " => " & strDestinationDirectory objFileSystem.CopyFolder strSourceDirectory, strDestinationDirectory, True ' disconnect objNetwork.RemoveNetworkDrive strDriveLetter, True WScript.Echo "Disconnected: " & strDriveLetter set objFileSystem = Nothing set objNetwork = Nothing WScript.Echo "End" Else WScript.Echo "Empty Password" End If ' ------ # 他にもこの質問サイトを検索すればこれよりはるかにマシなスクリプトがあると思われます。 > どなたか移植していただけませんか。 # こういう丸投げはよろしくないかと思いますが?

noname#221368
noname#221368
回答No.1

 最近は「DOS や bat」と聞いても、「?」というのが大勢だと思います。自分は DOS 経験者ですが、その頃はネットワークなんて「夢のまた夢」だったので、net use などのコマンドは自信がありません。  恐らくネットワークを通じてファイルをコピーしたい、という事だ思いますが、実質3行のコマンドなので、1行ごとに何をやってるのか、注釈を付けられてはいかがでしょうか?  その方が、応えがつきやすいと思います。

sherman
質問者

お礼

ご回答ありがとうございます。 net use \\server1\Users-----server1に接続する xcopy "\\server1\Users\myname\work\genshi.xls" "C:\Documents and Settings\myname\デスクトップ\folder" /i /s -----genshi.xlsをデスクトップ上にfolderというフォルダーを作ってそこに入れる net use /delete------server1の接続をきる という意味です。

関連するQ&A

  • 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行単位に行えるようご教授頂けませんでしょうか。 何分初心者なので、拙い文章、ご容赦願います。

  • VBS でDOSのNet useについて

    VBS内で DOSコマンドの net use * /delete を実行すると 必ずNで実行結果となってしまいます DOS窓ではキーボードでyをいれればいいのですがこの「y」をVBSで渡す方法が見つかりません。 いろいろ試しているのですが・・・どうにもうまくいきません。 OSはWindows7です -----------作成例 ある程度まではできたのですが  Dim objShell Dim wExec Dim sCmd0 Dim sCmd1,sCmd2,sCmd3 ' コマンド生成 sCmd0 = "net use" sCmd1 = "net use * /delete" sCom2 = "net use /persistent:yes" sCmd3 = "net use X: \\PC\skyhd108" ' objのセット Set objShell = CreateObject("WScript.Shell") ' コマンド実行 Set wExec = objshell.Exec("%ComSpec% /c " & sCmd1) Set wExec = objshell.Exec("%ComSpec% /c " & sCmd3) Set wExec = objshell.Exec("%ComSpec% /c " & sCmd2) Set wExec = objshell.Exec("%ComSpec% /c " & sCmd0) Do While wExec.Status = 0 Loop Result = wExec.StdOut.ReadAll MsgBox Result WScript.Echo "お疲れ様でした!" Set wExec = Nothing Set objShell = Nothing

  • コピーするVBS

    ファイルサーバーからファイルをデスクトップにコピーするVBSを下記のように作成しています。 Set objFSO= CreateObject("Scripting.FileSystemObject") objFsoCopyFile("\\server\public\test.mdb","C:\Documents and Settings\user\デスクトップ",true) この中で、「C:\Documents and Settings\user\デスクトップ」はパソコンごとに異なりますので、 それぞれのPCのデスクトップをしてする方法を探しています。 ネットで、デスクトップという類のフォルダの取得として Dim WshShell As Object Set WshShell = CreateObject("WScript.Shell") WshShell.SpecialFolders("Desktop") を絡めれば出来るようなことがありましたが、使い方をどなたか教えてください。

  • DOSのバッチファイルでカレントフォルダを取得するには?

    現在バッチファイルにファイルをドラッグ&ドロップするとそのファイルを処理するようなバッチを組もうとしています。 おおまかな流れとして  1.ファイルのバックアップ  2.test.exeの引数にファイルのパスを渡す といった事をしたいのですが、バッチファイルにドラッグ&ドロップするとカレントフォルダがC:\Documents and Settings\user\になってしまいます。 バッチファイルのある場所をカレントフォルダとするにはどうすればよいのでしょうか。 以下カレントフォルダを確認した結果です。 OS:Windows2000 実行バッチのパス: C:\Documents and Settings\user\デスクトップ\test.bat ---test.bat---- @echo off cd pause test.bat直接起動 C:\Documents and Settings\user\デスクトップ test.batにファイルをD&D C:\Documents and Settings\user 伝わりづらくて申し訳ございません。 宜しくお願い致します。

  • サーバからNASにファイルコピーするバッチファイル

    サーバからNASにファイルをコピーするバッチファイルを作成しました。 NASの共有フォルダにアクセス制限を設定し、バッチファイルを実行すると、 「アクセスが拒否されました」のメッセージが出てコピーできません。 バッチファイルの実行アカウントを「system」にしています。 どこが間違っているのでしょうか。 よろしくお願いします。 NAS:バッファローTeraStation :ホスト名→NAS :共有フォルダ名→test ユーザ→test パスワード→password サーバ:Windows2003serverSE ***バッチファイル*** net use S: \\NAS\test "password" /user:test xcopy "C:\test00" "\\NAS\test" net use S: /delete

  • バックアップをバッチファイルでしたいのですが・・

    バッチファイルを作成して、バックアップを取る方法を考えています。 Cドライブのフォルダ内のあるフォルダを 外付けハードにバックアップする方法です。 XCOPY C:\C:\Documents and Settings\ユーザー名\*.* F:\Documents and Settings\ユーザー名\/S/D/Y と作成しましたが、うまく動きません。 どこが間違っているのでしょうか? また、本当は、外付けハードではなく、 同じストレージ内にバックアップを取れたらいいなって思ってます。 具体的には、CドライブもDドライブも バックアップはDドライブの『bkup』というフォルダに保存できたらな・・・と。 しかし、そのバッチファイルを作成しても なぜかうまくいきません。 こういうのは無理なのでしょうか? 初心者なもので、わかりやすく教えて頂きたいです。 宜しくお願いします。

  • 複数のPCへファイルをコピーするバッチを作成したい

    WEBページへのショートカットを複数のPCへコピーするbatファイルを作成してみたのですがどうもうまくいきません。どのように記述したらよいでしょうか? 以下自分で作成してみたbatファイル xcopy "C:\テスト結果.url" "\\0001PC\C:\Documents and Settings\user\デスクトップ" /y /e ・ ・ ・ xcopy "C:\検査結果.url" "\\0100PC\C:\Documents and Settings\user\デスクトップ" /y /e また、コピー先のコンピュータ名を変数に代入する方法があれば教えてください。

  • エクセル VBA バッチが動かない。

    以下のVBAを試行錯誤の末(未熟なもので・・) 作ってみました。 デスクトップ上のフォルダを確認にて、存在する場合はそのままバッチ実行、 存在しない場合はフォルダを作成してバッチ実行。 というものなのですが、フォルダが存在する場合はすんなり行くのですが、 存在しない場合、フォルダを作成した後、バッチ処理がされなくて 困っています。どこが悪いのでしょうか? 是非ご教授お願いいたします。 ちなみにバッチはXCOPYです。 Sub SET_Original() Dim strPATHNAME As String strPATHNAME = "C:\Documents and Settings\ユーザー\デスクトップ\フォルダ" If StrConv(strPATHNAME, vbUpperCase) = "FALSE" Then Exit Sub If Dir(strPATHNAME, vbDirectory) = "" Then MsgBox "フォルダは作成します。", vbExclamation MkDir "C:\Documents and Settings\ユーザー\デスクトップ\フォルダ" Exit Sub End If Dim str As Variant str = Shell("c:\Documents and Settings\ユーザー\デスクトップ\copy.bat") End Sub

  • vbsで、フォルダ内にあるcsvファイル全てを開き、マクロを起動させた

    vbsで、フォルダ内にあるcsvファイル全てを開き、マクロを起動させたい。 こんにちは。 お世話になっております。 さて、最初はバッチでどうにかならないかと思っていましたが、下記vbsソースを見つけ、 早速チャレンジしたのですが、ファイルが開くところまではうまく行きますが、「マクロ Macro1がありません」というメッセージが出てしまい、マクロが実行されません。 手動でマクロを実行しようとするときに出てくるマクロ一覧には、PERSONAL.XLS:Macro1と、表示されております。 マクロの保存先をまちがえているのでしょうか? また、あるフォルダのcsvファイル全てに対して1つのvbsキックで処理が行なわれるようにするには、どの様にすればいいでしょうか? よろしくお願いします。 ----------------------------------------------------------------------- Dim obj Set obj = WScript.CreateObject("Excel.Application") obj.Visible = True obj.Workbooks.Open "C:\Documents and Settings\Administrator\My Documents\001.xls" obj.Application.Run "Macro1"

  • VBSについて

    VBSの中でDOSのコマンドを実行したいのですが、VBS内で使用した変数を Runで使うことはできないのでしょうか? ################################################ Set WSHShell = CreateObject("WScript.Shell") x = "C:\Documents and Settings\user" WSHShell.Run "cmd.exe /K dir x" ################################################ たとえば上記のようなプログラムを作ったときに最終行のcmd.exeの 実行で変数xを使用したいのですが、可能でしょうか? このまま実行するとコマンドプロンプトの窓が開いて「ファイルが見つかりません」と表示されてしまいます。 何か方法があればご教授ください。よろしくお願いします。

専門家に質問してみよう