VBSでファイル作成する方法と条件

このQ&Aのポイント
  • VBSを使用してファイルを生成する方法について知りたいです。PCが起動していない場合にファイル作成を行う方法も知りたいです。
  • VBSでファイル作成を行う際、ファイルの存在を確認して存在しなければ作成する方法を教えてください。
  • VBSでファイルを作成する際、ウイルスソフトの反応を避けるために他の方法があるか教えてください。
回答を見る
  • ベストアンサー

VBSでファイル作成をするとき

VBスクリプトでファイルを生成するソースを書いたのですがそれをバッチで実行するようにしてありますが例えばPCが起動していなく実行できなかった場合次回実行時に「もしこの名前のファイルがなかったら先に 作るはずだったファイルを作る」といったようなのが欲しいと思っております。 こういうのはプログラムで先にファイル検索をさせて無かったら作るといった感じになるのでしょうか? ファイル検索をさせるVBSはFileSystemObjectを使う方法になる以外に無いでしょうか? (ウイルスソフトが反応するため・・・・・) まだこの手の記述方法がわからないのでネットでサンプルを探したのですがなかったのでご存知の方ヒントをいただけないでしょうか? よろしくお願いします。 例:VBSCRIPTを1月にタスク実行でAAA1.txtを作成。 2月にこのタスクを実行したとき先にAAA1.txtがあるかを確認してあればAAA2.txtを作る。 もし無ければAAA1.txtを作る条件を当てはめ作ってからAAA2.txtを作る。

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

  • ベストアンサー
  • momoracci
  • ベストアンサー率51% (14/27)
回答No.1

> この手の記述方法 msdn - Scripting ランタイム ライブラリ - FileExists メソッド http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/jsmthFileExists.asp Windows Script Host Laboratory - Lesson13 ファイルシステムにアクセスする http://www.roy.hi-ho.ne.jp/mutaguchi/wsh/refer/lesson13.htm > ファイル検索をさせるVBSはFileSystemObjectを使う方法になる以外に無いでしょうか? > (ウイルスソフトが反応するため・・・・・) ウイルスソフトが反応するのは、FileSystemObject に限らず、VBScript全般ではないでしょうか。(自信なし)

関連するQ&A

  • WindowsHostScript(.vbs)?をバッチファイルから操作する

    バッチファイルの本を読んでいるのですが、バッチファイルの中から「WindowsHostScriptを呼び出す」という項目があります。それについての本を本屋で探したのですが、見当たりません。 1.本によるとWindowshostScriptは拡張子が「.vbs」とかいてあります。VBScriptも拡張子が「.vbs」です。要するに、WindowsHostScriptとはVBScriptのことなんでしょうか? 2.また、僕は、VBScriptはJavaScriptみたいにWEBで使うものだと思っていましたが、コマンドラインでも使えるものなんでしょうか? 以上2点、分かる方、よろしくお願いします。

  • vbsからバッチファイル実行時の引数渡しについて

    vbsからバッチファイルを実行する時に、引数として変数を渡すことはできるでしょうか。バッチファイルは引数を受け取れる記述をしています。変数の値は常に変動します。 CreateObject("WScript.Shell").Run "C:\HULTOOL\test.bat",0 を使ってtest.batを実行しています。"C:\HULTOOL\test.bat aaa(aaa)は固定の数値ですという書き方で、バッチファイルがaaaを第一引数として受け取れることは試してできました。しかし、aaaを変数にすると成功しません。何かよい記述方法はあるのでしょうか。ご教授ください。

  • vbsにてバッチファイルの実行

    vbsにて引数ありのバッチファイルを実行するためには、 どのようにしたらよろしいのでしょうか? 例えば、下記のものをvbsにて実行したいと考えております。 ------------------- aiueo.bat 1 2 3 4 5 ------------------- よろしくお願いします。

  • ファイルコピーVBS

    ファイルコピーVBS ファイルをコピーするVBScriptの書き方を教えてください。 コピー対象ファイルはEドライブのDataフォルダに入っています。 コピー対象ファイルは拡張子がdocかつファイルサイズが1MB以上のファイルだけです コピー先はHドライブのDataフォルダ直下です。 毎週日曜日の午前2時にWindowsのタスク機能等で実行する予定です。 WindowsServer2003R2StandardEditionで実行します。 その他必要な情報があれば言って下さい。 よろしくお願いします。

  • vbsスクリプト作成について

    いつもありがとうございます。 今回、知識がないのですが下記のような処理のVBSを作成したく調べております。 (1)test.vbsファイルを実行時にvbsファイルと同じディレクトリに「folder」フォルダを作成 (2)作成した「folder」フォルダにサービス「idsvc」の状態をテキスト形式で「service.txt」として出力 (3)上記と同様の処理(service.txtはリネームする)を現在ログインしているユーザのスタートアップに「start.vbs」として配置 (3)上記処理後、再起動を実施 (4)再起動後、start.vbsを実行後に自動削除 大きく分けて4つの処理を個別に作成して最終1つのファイルとして作成しようと思っております。 なんとかわからいなりに作成してはいるのですが どうしても下記方法がわかりません。 (2)の処理「folder」を作成後、service.txtのパス(最下位行)を変数に入れて出力する方法 (きたないソースで申し訳ないです) ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ' フォルダ作成 '---------------------------------------------- Dim str_Path Dim objFdr Set objFdr = CreateObject("Scripting.FileSystemObject") str_Path = objFdr.CreateFolder(".\folder") Dim WshShell Set WshShell = CreateObject("WScript.Shell") Set objLog = WshShell.Exec("cmd /C ""sc query idsvc | findstr -i state > .\folder\service.txt""") ※サービス出力はvbsでの方法がわからなかったのでcmdを呼び出しています。 (4)再起動後の処理にて、再起動前に作成したフォルダに「service.txt」を出力する方法 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ objVBSFile.WriteLine("On Error Resume Next") objVBSFile.WriteLine("Dim WshShell") objVBSFile.WriteLine("Set WshShell = CreateObject(""WScript.Shell"")") objVBSFile.WriteLine("Set objLog = WshShell.Exec(""cmd /C """sc query idsvc | findstr -i state >C:\services.txt"""")") objVBSFile.WriteLine("Set objFSO = CreateObject(""Scripting.FileSystemObject"")") objVBSFile.WriteLine("objFSO.DeleteFile WScript.ScriptFullName") 他にもわからないことはありますが、調べてなんとかなるとおもっておりますが 上記についてはVBSの理解不足なため、つかめません。 申し訳ありませんが、アドバイス頂けないでしょうか。 以上、宜しくお願い致します。

  • バッチファイル→vbsへのカレントディレクトリ情報引渡をしたいです。

    バッチファイル→vbsへのカレントディレクトリ情報引渡をしたいです。 あるフォルダにvbsファイルとそれを実行するためのバッチファイル、vbsで読み込むリストファイルを置いています。 これを現在ログインしているのとは別のユーザで実行したいのですが、ファイルの記述をすべてフルパス指定しなければ動きませんでした。 しかし、フォルダが変わるたびにすべてのパスを書き換えるのが大変なため、以下のように修正を加えたいと思っています。 (1)バッチファイルでvbsを実行する際、カレントディレクトリ情報を取得し、パスを確定。(CDコマンド) (2)vbsファイル実行 (3)(1)のCDコマンドで読み込んだ情報をvbsに引き渡し、リスト読み込み。 バッチファイルからvbsに引き渡す部分、vbsがバッチファイルから受け取る部分の記述が分かりません。 一例を教えていただけないでしょうか?

  • VBSでバッチパラメーターと同等のものは

    コマンドプロンプトの「%1」はバッチファイル実行時に付加された最初のパラメータを表します。 VBSでも同じような働きをさせたいのですが書き方がわかりません。 どうすればよいでしょうか。 なお、VBSの実行方法はあるVBSファイルに処理したいファイルをD&Dする事になります。

  • VBSでのファイル読込、出力操作について

    いつもありがとうございます。 掲題の件について、ご教授頂けますでしょうか。 下記のように『start.vbs』を実行すると『a.txt』の行に記載されている実行ファイル名を読み込み 『test.vbs』にファイル名分のコマンドを書き込みしたいです。 例) ----------------------------- start.vbs (作成途中) ----------------------------- Set objWShell = CreateObject("wscript.shell") Set objFso = CreateObject("Scripting.FileSystemObject") Set objFile = objFso.OpenTextFile("c:\a.txt", 1, False) ' 出力先ファイル Set objVBSFile = objFSO.CreateTextFile(c:\test.vbs, True) If Err.Number > 0 Then WScript.Echo "Open Error" Else Do Until objFile.AtEndOfStream objVBSFile.WriteLine(objFile.ReadLine) Loop End If ----------------------------- a.txt ----------------------------- adobe.exe photoshop.exe ****.exe    ・    ・    ・ ------------------------------ start.vbs ------------------------------ objWShell.Run "cmd.exe c:\adobe.exe ", 0, True objWShell.Run "cmd.exe c:\photoshop.exe ", 0, True objWShell.Run "cmd.exe c:\****.exe ", 0, True    ・    ・    ・ vbsをサイトを参考にして作ってはいるものの、start.vbsを実行すると a.txtのファイル名をvbsに書き込むのが限界です。 少しずつ勉強していくのですが、本件少し早めに作りたいという背景があり ご教授頂けませんでしょうか。 また、わかりにくい説明となっておりますが どうぞ宜しくお願い致します。

  • VBSで作成したフォルダにファイルをコピー出来ない

    いつもお世話になっております。 表題に関してなのですが、VBSでFileSystemObjectを利用してフォルダを作り、 そのフォルダにファイルをコピーするという内容のスクリプトを作成しています。 ですが、フォルダは無事に出来るのですが、ファイルをコピーしようとすると、 「書き込み出来ません」 と出て、コピーされません。 fso.CopyFileのところで、エラーが発生してるようです。 CopyFileメソッドの代わりにCopyコマンドで実行するように記述すると 問題なくコピーされます。 解決方法等ございましたら、ご教授ねがいます。

  • バッチファイル 時間指定

    バッチファイルをスタートアップに入れています。 手軽で便利なのですが、起動するたびに出てしまうので、if文か何かを使って、前回の実行してから12時間経っていない場合はバッチファイルを終了させるようにできないでしょうか。 robocopyを使ったバッチで、オプションでログを作成するようにしています。そのテキストファイルの作成時間で12時間経っているかどうか判断できればと思っています。 と質問したところ、以下の回答を得ました。 check.vbs ------------------------- Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFile("logfile.txt") WScript.Quit(DateDiff("h",f.DateCreated,Now)>12) ------------------------- バッチでは、先頭で、 cscript check.vbs || exit これを追加したのですが、12時間経っていなくても実行されます。 なぜなのでしょうか。

専門家に質問してみよう