thumb

中山テック 代表の中山です。

さてファイル名を1個1個変えていくのって面倒くさいですよね。

そこで!(織田裕二風)

ファイル内の特定の文字列を変換し「henkango」フォルダに格納するツールを作成したのでご覧ください。

※言うまでもないかもですが、PCで使用するツールです

上記のアイコンをクリックします。

するとgithubのページに遷移しますので「name-change.vbs」をクリック。

さらに遷移したページで下矢印アイコンをクリックしてダウンロードすれば使えます。

※配置場所はどこでも良いと思いますが、なるべく漢字やスペースのないパスが確実

使い方

さて、ここに290枚の写真があります。

これはいつぞやの大井競馬場で撮影したパドックでの写真になります。

写真には全て「IMG」と入っているので「大井競馬場パドック」に変更したいと思います。

まずは置換対象のパスを入力
置換対象文字列を入力
置換後文字列を入力
完了!置換件数も出力

置換(リネーム)されたファイルは「henkango」という新しいフォルダの中に格納されます。

※名前を変えたい方は後述のプログラムをいじってちょ

無事置換されました!
  • 関連記事

プログラム解説

' 変数群

Option Explicit

Dim baseFileFolderName				'画像ファイル格納場所名
Dim baseFileFolderObj				'画像ファイル格納場所
Dim changeFileNameAfterFolder 		'変換後画像ファイル格納先
Dim objFS							'ファイルシステムオブジェクト
Dim baseName						'置換前の名前
Dim changeName						'置換後の名前
Dim file							'ファイルリストから取り出した一つのファイル名
Dim newFileName						'新ファイル名
Dim counter							'置換ファイル数

ポイントは

1.置換対象フォルダの入力・チェック

2.置換前文字列と置換後文字列を入力

3.新規フォルダ「henkango」作成

4.検索

5.リネーム

6.「henkango」フォルダに保存

7.置換件数を表示

となります。

置換対象フォルダの入力・チェック

baseFileFolderName = InputBox("画像ファイル格納場所を教えて")

'===============================
' ファイルシステムオブジェクト作成
'===============================
Set objFS = CreateObject("Scripting.FileSystemObject")

'===============================
' フォルダ存在確認
'===============================
If objFS.FolderExists(baseFileFolderName) Then

~~~ If処理終了後 ~~~

Else
	'フォルダが存在しない場合の処理
	WScript.Echo "フォルダがねーぞ"
End If

set objFS = Nothing

パス入力と存在処理はこちらのブログでも説明してますので割愛します。

置換前文字列と置換後文字列を入力

	'===============================
	'置換対象文字列入力
	'===============================
	baseName = InputBox("置換対象の文字列を入れてください")
	If Trim(baseName) = "" Then
		'入力値なし、または0の場合
		Set objFS = Nothing
		WScript.Echo "なんかいれて"
		WScript.Quit
	End If

	'===============================
	'置換後文字列入力
	'===============================
	changeName = InputBox("置換後の文字列を入れてください")
	'If Trim(baseName) = ""  Then
		'入力値なし、または0の場合
		'Set objFS = Nothing
		'WScript.Echo "なんかいれて"
		'WScript.Quit
	'End If

文字列を入力するだけで前項とやっていることは一緒です。

ただここでは文字列の入力があるかないかをチェックしております。

なお置換後に入力がない場合、一致した文字列を消したい!という場合は

	'===============================
	'置換後文字列入力
	'===============================
	changeName = InputBox("置換後の文字列を入れてください")

このように修正してください。

新規フォルダ「henkango」作成

さて、置換対象ファイルが置いてあるフォルダが判明した所で、置換後ファイルを配置するフォルダを作成します。

	'===============================
	' 存在する場合はフォルダオブジェクト取得
	'===============================
	Set baseFileFolderObj = objFS.GetFolder(baseFileFolderName)
	changeFileNameAfterFolder = baseFileFolderName & "\henkango"

	If objFS.FolderExists(changeFileNameAfterFolder) Then
	Else
		objFS.createFolder(changeFileNameAfterFolder)
	End If

フォルダ作成はこちらのブログでも説明してますが今一度・・・

置換対象ファイルが格納されているフォルダのアドレスを取得し、「henkango」をくっつけます。

この際に「もっと違う場所、名前のフォルダにしたい!」という場合はプログラムを変更しましょう。

最後のIF文は、既にhenkangoフォルダがある場合は何もせず、ない場合のみ作成する命令です。

検索・置換(リネーム)・別フォルダ格納

	counter = 0

	'===============================
	' 置換
	'===============================
	' フォルダ内のファイルをループ
	For Each file In baseFileFolderObj.Files
		' ファイル名にoldNameが含まれているかチェック
		If InStr(file.Name, baseName) > 0 Then
			' 新しいファイル名を作成
			newFileName = Replace(file.Name, baseName, changeName)
			' ファイルをコピー
			objFS.CopyFile file.Path, objFS.BuildPath(changeFileNameAfterFolder, newFileName)
			counter = counter + 1
		End If
	Next

For Eachは取得したファイルを一つずつ抜き出してループさせています。

その次には「InStr」で検索、一致した箇所があれば「〇文字目」を返却しますので0より上の数値で条件判定。

「Replace」で置換対象文字列を置換後文字列でリネームします。

最終的にファイルオブジェクトの「CopyFile」機能を使って「henkango」フォルダへ格納します。

置換件数表示

	if counter = 0 Then
		WScript.Echo "置換対象ファイルがありません"
	else
		WScript.Echo "置換対象ファイル:" & counter & "件"
	End If

前項の「counter」ってなんだ?と思った方もいらっしゃると思いますが、置換ファイルがあればインクリメント(+1)していってます。

冒頭の使い方では290個置換したとありましたが、290回置換したと思って貰えたらよいと思います。

もし想定の数値と一致しない、ということがあれば指定する文字列誤りの可能性があります。

まとめ

ブログ等で一定の画像を同じカテゴリのファイル名にしたい場合独自ツールが役に立っています。

こちらのツールで幅(width) or 高さ(height)の長い方を一律700pxにする

 ⇒700px未満時は何もしない

・適当なファイル名001とか002とかにし、一気に置換

という形で楽をさせてもらってます。

お役に立てるかはわかりませんが、もし使いやすそうかもと思ったら是非使ってみてください!

おすすめの記事