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

現在下記のvbsを使ってファイル名内のカッコを削除する作業をしているのですが、vbs実行後カッコは削除出来るのですが、末尾に半角のスペースが残ってしまいます。スペースの削除するにはどうすれば良いですか?宜しくお願いします。
例) 12345 .jpg⇒12345.jpg



'当該ファイルと同じディレクトリ下のすべてのjpegファイルのファイル名の下4桁を削除したものにリネームする
' 122( 1).jpg ---> 122.jpg
' 但し、リネーム後に同一のファイルが存在する場合はリネームしない
Option Explicit
Dim strFolderName ' フォルダ名
Dim strScriptName ' スクリプト名

Dim objFSO ' FileSystemObject
Dim objStartFolder ' 開始フォルダ
Dim objREG '正規表現
Dim baseName 'ファイルのベース名(拡張子を除いた名称)
Dim extName 'ファイルの拡張子(.は含まれない)
dim newName
dim newPath
dim oldPath
set objREG = New RegExp
objREG.Pattern = "^(.*)(\(.*\))(\.jpg)$"
objREG.IgnoreCase = True
' フォルダ検索関数
Sub FindFolder(ByVal objMainFolder)
Dim objSubFolder ' サブフォルダ
Dim objFile ' ファイル
'各ファイルを表示
For Each objFile In objMainFolder.Files
if objREG.Test(objFile.Name) then
newName = objREG.Replace(objFile.Name,"$1" & "$3")

oldPath = objFile.Path
newPath = objFSO.GetParentFolderName(oldPath) & "\" & newName
if objFSO.FileExists(newPath) then

else
objFSO.MoveFile oldPath,newPath 'リネーム
end if
End If
Next
End Sub

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")

strScriptName = WScript.ScriptName
strFolderName = Left(WScript.ScriptFullName,InStrRev(WScript.ScriptFullName, "\"))

Set objStartFolder = objFSO.GetFolder(strFolderName)
WScript.Echo objStartFolder.Path
FindFolder objStartFolder

Set objStartFolder = Nothing
Set objFSO = Nothing

A 回答 (2件)

以前、私が回答した問かと思います。


変更前のファイル名が()の前にスペースがある場合、つまり
1234□(1).jpgのような場合
1234□.jpgとなってしまいます。(□は半角のスペースとします)

いかの2行を下記のように変えてください。
変更前
objREG.Pattern = "^(.*)(\(.*\))(\.jpg)$"
変更後
objREG.Pattern = "^(\S*)(\s*)(\(.*\))(\s*)(\.jpg)$"

変更前
newName = objREG.Replace(objFile.Name,"$1" & "$3")
変更後($3を$5にする)
newName = objREG.Replace(objFile.Name,"$1" & "$5")

念の為、1234□(1)□.jpg
のように()の後のスペースも削除するようにしました。
1234□(1)□.jpgを
1234.jpgに変更します。
    • good
    • 0
この回答へのお礼

今回も有難う御座いました。おかげでファイル名からスペースも削除でき助かりました!!

お礼日時:2016/10/27 10:13

No1に記述した変更箇所は、本来の()がついたファイル名から()を削除するためのものです。


もし、例) 12345 .jpg⇒12345.jpg のように
ファイル名からスペースをとりたいだけ(但し、そのファイル名は()はついていない)なら、
あらたにスクリプトを作る必要があります。
今、あなたが提示したスクリプトをコピーし、xxx.vbsというファイルを作成します。(xxxは任意です)
そのxxx.vbsの
objREG.Pattern = "^(.*)(\(.*\))(\.jpg)$"
の行を
objREG.Pattern = "^(\S*)(\s+)(\.jpg)$"
に変えます。

newName = objREG.Replace(objFile.Name,"$1" & "$3")
の箇所はそのままです。($3を$5に変えてはいけません)

そうすると、12345 .jpg⇒12345.jpg のようにスペースをとるスクリプトができます。
    • good
    • 0

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