プロが教える店舗&オフィスのセキュリティ対策術

はじめまして。こんにちは。ファイル名の取得、フォルダの作成、移動ができなくて困っています。

たとえばC:\testというフォルダの中にaaa1.txt aaa2.txt,aaa3,txt・・・zzz343.txtというようにファイルがランダムにあったとします。最初の3文字は英語と決まっています。そこでaaa1.txtやaaa2.txtがあればaaaというフォルダを同じ階層に作成し、aaa1.txtとaaa2.txtを新しく作成したaaaというフォルダに移動させる。これをすべてのファイルにたいして行いたいのですがどうすればいいのでしょうか?

参考になるURLやサンプルプログラムがありましたら教えて下さい。よろしくお願い致します。

gooドクター

A 回答 (1件)

だいたいこんな感じでいいかと思います。


C:\testとか特定のフォルダというので調べていません。
処理するフォルダにスクリプトを置いて実行することを前提としています。
-------------------------------------------------------------------
Dim fso, folder, regEx,x, exp, folderName

Set fso = WScript.CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(".")
Set regEx = New RegExp

regEx.Pattern = "^[a-z]{3}" '先頭に英字が3文字ある
regEx.IgnoreCase = True ' 大文字と小文字を区別しない

For Each x in folder.files
exp=fso.GetExtensionName(x.Name) '拡張子
if UCASE(exp)="TXT" and regEx.test(x.Name) then
folderName = Left(x.Name,3) ' 移動するフォルダ名を取り出す
if not fso.FolderExists(folderName) then '既にフォルダがあるか?
fso.CreateFolder(folderName) '無いのでフォルダを作る
end if
fso.MoveFile x.Name, folderName & "\"
end if
next
    • good
    • 1
この回答へのお礼

ありがとうございます。
完璧でびっくりしました。
とても感謝しています。
また、何かあればよろしくお願いします。

お礼日時:2005/08/21 13:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

人気Q&Aランキング