質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

1回答

2815閲覧

VBSでのフォルダ名一括変更処理

myy388

総合スコア16

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2021/06/09 07:24

特定のフォルダ以下全てのフォルダについて、全角の()を半角に置換するコードを書き、希望通りの動きが出来たのですが、何故うまくいっているのか分からない部分があり質問を投稿しました。

VBscript

1Option Explicit 2Dim FSO,fs,fn, f,foldername,subfolder 3Set FSO = CreateObject("Scripting.FileSystemObject") 4'カレントディレクトリを引数として関数呼び出し 5RenameFolder FSO.GetFolder(FSO.GetParentFolderName(WScript.ScriptFullName)) 6 7sub RenameFolder(Folder) 8 For Each f In Folder.subfolders 9 '再帰用にサブフォルダのオブジェクト作成 10 Set fs = WScript.CreateObject("Scripting.FileSystemObject") 11 Set fn = fs.GetFolder(f) 12 foldername = f.Name 13 Dim rename 14 rename = foldername 15 rename = Replace(rename,"(","(") 16 rename = Replace(rename,")",")") 17 'renameに変更が加えられた時 18 if foldername <> rename then 19 f.Name = rename 20 End if 21 '下層フォルダを再帰呼び出し 22 RenameFolder fn 23 Next 24 set fs = Nothing 25 set fn = Nothing 26 Set FSO = Nothing 27end sub

ファイル階層
├─test
│ ├─2011114(a)
│ ├─20115
│ └─済2xxxx1116(a)
│ └─10223402()
└─test2
├─2011203423(a)
└─済201111116(a)

「'下層フォルダを再帰呼び出し」の部分で、fnを引数として再帰的に「RenameFolder」を呼び出し、下位ディレクトリのサブフォルダを調べようとしたのですが、これだとサブフォルダが無いフォルダ(例えば2011114(a))がfnに格納されたとき、

For Each f In Folder.subfolders

のFolder.subfolders部分がnullになりエラーが出るかと思っていたのですが、エラーが出ずに処理が続きました。
また、そもそもフォルダがないフォルダでこのコードを実行したのですが、特にエラーは出ませんでした。

これはVBSの仕様なのでしょうか?それとも、別の行でエラーを回避しているのでしょうか。
コードは出来ましたが、すっきりしないのでどなたかご回答いただけますと幸いです。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

VBSの仕様という理解でいいと思います。
サブフォルダがないときは、Folder.subfolders は要素がゼロ個のコレクションとなり、
その場合 Forループは一度も回らずに素通りします。

投稿2021/06/09 09:52

jinoji

総合スコア4585

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

myy388

2021/06/09 11:15

回答ありがとうございます。スッキリしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問