VBS内で類似する処理の分岐方法

解決


岩男  2007-12-27 12:28:03  No: 138486

こんばんは!

タイトル通りなのですが、VBS内で同じような処理を分岐する方法がわかりません。こういった処理は出来るものなのでしょうか?

[VBSサンプル]
Option Explicit

Dim objFSO
Dim objFile
Dim objText
Dim objWrite

Dim Foldername,NewFolderName
Dim FS
Dim folderpath
Dim Readfile,Writefile

'--------------------------------------------------------------------
'①C:\test\temp\a.txtがあり、読み書きの処理を行う

Const Foldername = "C:\test"
Const NewFolderName = "temp"

Set FS = WScript.CreateObject("Scripting.FileSystemObject")
folderpath = FS.BuildPath(foldername,newfoldername)

if FS.FolderExists(folderpath) Then
   MsgBox "同じフォルダがあります"
   WScript.Quit
end if

FS.CreateFolder folderpath
if MsgBox (folderpath & "を作成", vbYesNo Or vbQuiestion, "確認") =vbYes Then
  MsgBox "処理を開始します", vbInformation
Else
   MsgBox "処理を終了します", vbExclamation
   WScript.Quit
End If

filepath = FS.BuidPath(folderpath,"a.txt")
FS.CreateTextFile filepath
MsgBox "フォルダとファイルを作成しました"

Set objFSO = CreateObject("Scripting.FileSystemObject")
if objFSO.FileExists("C:\test\temp\a.txt") then
    Set objFile = objFSO.GetFile("C:\test\temp\a.txt")
    if objFile.Size = 0 then
        WScript.Echo "空のファイルです"
        WScript.Quit
    else
        WScript.Echo "ファイルが存在しません"
        WScript.Quit
    end if
else
    Set Readfile = objFSO.OpenTextFile("C:\test\temp\hoge\b.txt", ForReading)
    Set Writefile = objFSO.OpenTextFile("C:\test\temp\hoge\c.txt", ForWriting, True)
end if
Set objFSO = nothing

以下、Readfile,Writefileの処理(中略)
'--------------------------------------------------------------------'②C:\app\freesoft\a.logがあり、読み書きの処理を行う

Const Foldername = "C:\app"
Const NewFolderName = "freesoft"

Set FS = WScript.CreateObject("Scripting.FileSystemObject")
folderpath = FS.BuildPath(foldername,newfoldername)

if FS.FolderExists(folderpath) Then
   MsgBox "同じフォルダがあります"
   WScript.Quit
end if

FS.CreateFolder folderpath
if MsgBox (folderpath & "を作成", vbYesNo Or vbQuiestion, "確認") =vbYes Then
  MsgBox "処理を開始します", vbInformation
Else
   MsgBox "処理を終了します", vbExclamation
   WScript.Quit
End If

filepath = FS.BuidPath(folderpath,"a.log")
FS.CreateTextFile filepath
MsgBox "フォルダとファイルを作成しました"

Set objFSO = CreateObject("Scripting.FileSystemObject")
if objFSO.FileExists("C:\app\freesoft\a.log") then
    Set objFile = objFSO.GetFile("C:\app\freesoft\a.log")
    if objFile.Size = 0 then
        WScript.Echo "空のファイルです"
        WScript.Quit
    else
        WScript.Echo "ファイルが存在しません"
        WScript.Quit
    end if
else
    Set Readfile = objFSO.OpenTextFile("C:\app\freesoft\tora\b.txt", ForReading)
    Set Writefile = objFSO.OpenTextFile("C:\app\freesoft\tora\c.txt", ForWriting, True)
end if
Set objFSO = nothing

以下、Readfile,Writefileの処理(中略)
'--------------------------------------------------------------------

①と②は処理が類似しています。このままVBSとして実行すると①②と両方の処理を実施してしまいます。
①と②のどちらか一方の処理を実行したい場合、どのようにVBSを組めばよいのでしょうか?
これもMsgBox関数を使用し、どちらかの処理を「はい」「いいえ」の2択で繋ぎあわせる事はできるのでしょうか?

参考書やWebで調べてみたのですが、上記のような処理をしているサンプル等がありませんでした。
ご教授の程、宜しく御願いします。


無理  2007-12-27 17:14:57  No: 138487

分岐する条件を考えてみて、その分岐条件で分岐すれば?


特攻隊長まるるう  2007-12-27 18:50:36  No: 138488

>これもMsgBox関数を使用し、どちらかの処理を「はい」「いいえ」の2択で繋ぎあわせる事はできるのでしょうか?
>参考書やWebで調べてみたのですが、上記のような処理をしているサンプル等がありませんでした。
『MsgBox VBS』のキーワードで検索したら、戻り値を変数に格納するサンプルがごろごろあったけど、
それでは何が都合が悪いの?


岩男  2007-12-28 11:49:40  No: 138489

無理さん、特攻隊長まるるうさん、ご回答頂きありがとうございます。

結論から言うと、①と②をif文とMsgBox関数を使用してまとめる事にしました。

都合が悪いわけではないのですが、①を飛ばして②を実行・①を実行して②を飛ばす方法があれば、構成を変更せずにプログラムの処理が行えるのではないか?と疑問に思ったからです。

まだまだ勉強不足で申し訳ないです・・・


さくら  2007-12-28 17:49:02  No: 138490

>①と②をif文と・・・

丸付き文字を常用しているのならばやめたほうがいいです。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加