こんばんは!
タイトル通りなのですが、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で調べてみたのですが、上記のような処理をしているサンプル等がありませんでした。
ご教授の程、宜しく御願いします。
分岐する条件を考えてみて、その分岐条件で分岐すれば?
>これもMsgBox関数を使用し、どちらかの処理を「はい」「いいえ」の2択で繋ぎあわせる事はできるのでしょうか?
>参考書やWebで調べてみたのですが、上記のような処理をしているサンプル等がありませんでした。
『MsgBox VBS』のキーワードで検索したら、戻り値を変数に格納するサンプルがごろごろあったけど、
それでは何が都合が悪いの?
無理さん、特攻隊長まるるうさん、ご回答頂きありがとうございます。
結論から言うと、①と②をif文とMsgBox関数を使用してまとめる事にしました。
都合が悪いわけではないのですが、①を飛ばして②を実行・①を実行して②を飛ばす方法があれば、構成を変更せずにプログラムの処理が行えるのではないか?と疑問に思ったからです。
まだまだ勉強不足で申し訳ないです・・・
>①と②をif文と・・・
丸付き文字を常用しているのならばやめたほうがいいです。
ツイート | ![]() |