• 締切済み

VbScriptからコマンドプロンプトのプログラムを実行する

Dim driveLetterと定義してあります。 driveLetterには"D:\"を入れてあります。これを使って WShell.Run "cmd /c (robocopy ○○testfolder C:\testfolder /MIR /Z)", 0 を実行してrobocopyをウィンドウを表示させずに実行したいのです。○○の部分にD:\が入ります。 この場合、○○の部分に%driveLetter%を使ってもできませんでした。

noname#200754
noname#200754

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

VBSなら &演算子で文字列を連結しましょう WShell.Run "cmd /c (robocopy ○○testfolder C:\testfolder /MIR /Z)", 0 を WShell.Run "cmd /c (robocopy " & driveLetter & "testfolder C:\testfolder /MIR /Z)", 0 といった具合にします %driveLetter% といった記述は バッチファイル(CMDやBAT)で環境変数を参照する場合です

noname#200754
質問者

お礼

ありがとうございました!ありがとうポイントを20ポイント授与しようと思ったんですが、ボタンを押し間違ってできませんでした・・・。すみません;;;

関連するQ&A

  • コマンドプロンプトの出力をVBScript内の変数に代入する

    VBScriptからコマンドプロンプトのver | findstr 5.1を実行し、その出力結果をVBScript内の変数に代入したいのですが、どうすればいいでしょうか? Dim WShell Dim result Set WShell = WScript.CreateObject("WScript.Shell") WShell.Run "cmd /c (ver | findstr XP > " & result & ")" MsgBox result とやってもresultには何も入っていませんでした。

  • コマンドプロンプト

    コマンドプロンプトで robocopy a b /mir /xo robocopy c d /mir /xo robocopy e f /mir /xo というバッチファイルを作ったとして、共通部分の/mir /xoを毎回打たなくてもいい方法はあるのでしょうか。 理想としては aaa = /mir /xo robocopy a b aaa robocopy c d aaa robocopy e f aaa みたいにできると、助かります。

  • コマンドプロンプトからのcmd実行について

    現在VBSでオブジェクトを定義しrunを使いcmd経由で他のバッチ・VBS・ソフトの起動をやっています。 ふととあるパスが実行できませんでした。 そこで別途個別にコマンドプロンプトだけで実行してみましたがやはりうまく処理できません。 [echo.bat] echo test pause [コマンドプロンプト] rem その1 cmd /K c:\temp\a\echo.bat rem その2 cmd /K C:\Temp\(a\echo.bat その1の結果 C:>cmd /K C:\Temp\a\echo.bat C:>echo test test C:>pause 続行するには何かキーを押してください . . . その2の結果 C:>cmd /K C:\Temp\(a\echo.bat 'C:\Temp\' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。 C:> 上記のように1は正常に処理され2はうまく処理されません。 解決策をひたすら検索したのですが見つからず なんとなくだいたい分かったのが一部『(』や『)』や『&』や『@』や『^』などの記号が混じるとどうやらうまく処理できないようです。 なぜ処理できないのか?と、如何すればこれを回避して実行できるか分かる方がいればよろしくお願いします。 備考: (現状の緊急回避として記号のあるパスは記号のないパスから経由batを生成する方法を思いつきましたが自分で馬鹿だと思います) (経由バッチの中身が"C:\Temp\(a\echo.bat"ならば実行できるから) また、cmd /K "C:\Temp\(a\echo.bat" では実行できませんでした。 OSはXPです。コマンドプロンプトヴァージョンは(Microsoft Windows XP [Version 5.1.2600])です

  • コマンドプロンプトが起動できない

    コマンドプロンプトを起動するため、スタート->ファイル名を指定して実行 より「cmd」と実行したところ、通常の場合コマンドプロンプトが開くはずか 以下のようなエラーがポップアップダイアログに表示されました。 なぜか「cmd.com」になっています。 cmd.exedと入力するとコマンドプロンプトは正常に表示されました。 16 ビット MS-DOS サブシステム C:WINDOWS\system32\cmd.com NTVDM CPU は不正命令を検出しました。 CS:0002 OP:0f 02 f0 06 04 アプリケーションを終了するには、「閉じる」を選んでください。 [閉じる(C)] [無視(I)] 何かウィルスか何かによって攻撃されたのでしょうか? 宜しくお願いいたします。

  • コマンドプロンプト

    C:\>cd D: を実行すると C:\>cd D: D:¥ と表示されるだけで、また C:\> と表示され、ディレクトリの移動が出来ません。 どうしたらいいのでしょうか。

  • Vbscriptに詳しいかたがいらっしゃるならぜひ教えてください!

    以下のコードなんですが なぜかwindows2000では何回実行しても 圧縮ファイルができあがりますが windows2003では いつも空のzipファイルが作られてしまいますけど Vbscriptに詳しいかたがいらっしゃるなら ご教授願います。 Dim fso Dim wShell Dim sourceFolderPath Dim sourceFilePath Dim targetFolderPath Dim Shell Dim ie Dim file Dim d Dim sourceFile Dim zipfile Dim zip Dim dFolder Dim ZIPdata:ZIPdata="PK" & Chr(5) & Chr(6) & String(18,0) targetFolderPath="C:\job\VBS\zip\" sourceFilePath ="C:\job\VBS\新しいフォルダ\test1.txt" Set fso=CreateObject("Scripting.FileSystemObject") Set wShell=CreateObject("WScript.Shell") CreateObject("WScript.Shell").Run "explorer.exe",0,True WScript.Sleep 100 Set Shell=CreateObject("Shell.Application") For Each ie In Shell.Windows If Not ie.Busy and ie.ReadyState=4 and InStr(TypeName(ie.Document),"IShellFolderViewDual")=1 Then exit for end if next Set Shell=ie.Document.Application 'set sourceFolder = fso.GetFolder(sourceFolderPath) set sourceFile = fso.GetFile(sourceFilePath) set targetFolder = fso.GetFolder(targetFolderPath) set sourceFile = fso.GetFile(sourceFilePath) d = sourceFile.DateLastModified zipfile=targetFolderPath & "¥" & Year(d) & "-" & Month(d) & "-" & Day(d) & " " & sourceFile.Name & ".zip" fso.CreateTextFile(zipfile).write ZIPdata Set dFolder=Shell.NameSpace(zipfile) Set Folder=Shell.NameSpace(sourceFile.ParentFolder.Path) Set FolderItem=Folder.ParseName(sourceFile.Name) dFolder.CopyHere FolderItem,&H10

  • robocopyコマンド

    以下のコマンドを実行し、logを見ると、エラーのようなものが出ているのですが、 このような場合は、再度、robocopyコマンドを実行すべきでしょうか? >robocopy c:\Windows \FVserver1\bk /MIR /R:0 /W:0 /NP /TEE /LOG:log.txt 新しいファイル 16640 7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0 2014/12/01 20:12:54 エラー 32 (0x00000020) ファイルをコピーしています c:\Windows\System32\7B296FB0-376B-497e-B012-9C450E1B7327-5P-1.C7483456-A289-439d-8115-601632D005A0 プロセスはファイルにアクセスできません。別のプロセスが使用中です。 -----------------------------------処理結果------------------------------------------- 合計 コピー済み スキップ 不一致 失敗 Extras ディレクトリ: 14422 14412 10 0 0 0 ファイル: 62685 62632 11 0 42 0 バイト: 10.193 g 10.055 g 34.06 m 0 107.62 m 0 時刻: 0:43:04 0:19:53 0:00:00 0:23:10 スキップ(ディレクトリ:12、ファイル:11)や不一致(ファイル:42)のものは、どうすべきなのでしょう? 完全にコピーできていないということでしょうか? 何か、robocopyってやたらと時間がかかって、単純にコピペの方が 楽な気もするのですが、何が良いのでしょう??

  • VBSCRIPTでcmd命令(dir)を実行させて

    パスはcsvファイルで読みこんで、vbs上で Set Shell = CreateObject("WScript.Shell") Shell.Run "cmd /C ""dir \¥xxx\xxxxx\xxxxx" を実行させてアクセスできなかったパスがぞんざいするならエラーで返して続いて実行してほしいです。 それで最後にログにエラー情報を書く処理をおこないたいです。問題はcmdだとecho %errorlevel%これを使えば すぐにこげたことを1か0で返してくれますが vbs上でも可能ですか?

  • ASPからVBScriptの実行

    ASPから下のVBScriptを実行使用とすると "500"Internal Server Error が出力されて困ってます。 へるぷみー Dim objWSHShell Set objWSHShell=WScript.CreateObject("WScript.Shell") objWSHShell.Run "cscript.exe d:\test.bat" objWSHShell=Nothing

  • 削除が実行されない

    以下のvbsを実行しても rmdir が実行されません どうしたらよいでしょうか Dim objShell Dim wExec Dim strResult Set objShell = CreateObject("WScript.Shell") objShell.CurrentDirectory = "C:\Users\xxx\Desktop\test" objShell.Exec ("cmd /c dir 201406* /b/ad/s >> ログ.txt") Set wExec = objShell.Exec ("cmd /c for /R %d in (201406*) do rmdir /S /Q ""%d""") Set wExec = Nothing Set objShell = Nothing

専門家に質問してみよう