アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。
仕事でVBScriptを用いて定例作業を自動化させようと考えております。VBScriptの本を読んだり、パソコンで調べながら進めているのですが、初めてのことでなかなかうまくいきません。大変恐れ入りますが、どなたか教えていただけないでしょうか?
実行したい処理は以下のとおりです。
・月初に特定のフォルダにある特定のファイルをバックアップ用フォルダにコピーしてリネームする。
・リネームルールは「元ファイル名_前月月(mm).元拡張子」。

上司から催促され困っています。
よろしくお願いします。

A 回答 (2件)

VBScript というよりも、FileSystemObject というコンポーネントの使い方について調べた方が良いね。



「リネームしながらコピー」は FileSystemObject オブジェクトの CopyFile メソッドでも良いけれど、対象ファイルを File オブジェクトとして参照していれば、File オブジェクトの Copy メソッドも利用できるし、新しいファイル名も File オブジェクトのプロパティを利用して加工できる。

abcd.txt の "abcd" の部分は FileSystemObject の GetBaseName メソッドで取得可能。
".txt" の部分は FileSystemObject の GetExtensionName メソッドで取得可能。
パス文字を組み立てる場合は単純な文字列結合でも良いが、FileSystemObject の BuildPath を使えば区切り文字を自動的に挿入してくれる。

何がうまくいかないのか全く想像できないので断片的に書いてみました。 参考程度に。

' コピー先フォルダーのパス
Dim destDirPath
destDirPath = "C:\backup"

' FileSystemObject
Dim fso
Set fso = CreateObject

' 前月の月 (mm) を生成
Dim previousMonth
previousMonth = Right("0" & Month(DateAdd("m", -1, Date)), 2)

' ここから下を「特定のフォルダー内にあるファイル群のうち、特定の条件に合致するファイル」 がある限りループさせる。

' コピー元ファイルを参照
Dim sourceFile
Set sourceFile = fso.GetFile("コピー元ファイルのパス")

' リネームしながらコピー
Dim newFilePath
newFilePath = fso.BuildPath(destDirPath, fso.GetBaseName(sourceFile.Name) & "_" & previousMonth & fso.GetExtensionName(sourceFile.name))
sourceFile.Copy newFilePath, True
    • good
    • 0

特定のフォルダからファイル一覧をとる


https://msdn.microsoft.com/ja-jp/library/cc42810 …
目的のファイル名であるか調べる
https://msdn.microsoft.com/ja-jp/library/cc39242 …
コピーしてリネームする
https://msdn.microsoft.com/ja-jp/library/cc42801 …
    • good
    • 0

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