現在下記の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
No.1ベストアンサー
- 回答日時:
以前、私が回答した問かと思います。
変更前のファイル名が()の前にスペースがある場合、つまり
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に変更します。
No.2
- 回答日時:
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 のようにスペースをとるスクリプトができます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onedrive にexcelファイルをア...
-
エクセルに張り付けた写真のフ...
-
【VB.NET】Excelの最終行までの...
-
VB.NET Excelを読み込んでDataT...
-
エクセルのファイル名をコピー...
-
aspxをhtmlに変換する方法について
-
Excelでボタン(フォームコント...
-
フォルダの中のフォルダも圧縮...
-
ffftpでファイル取得が0バイト...
-
phpのファイルがブラウザで開か...
-
vba 空のデータをSplitする時の...
-
キヤノン アソビカメラ iNSPiC ...
-
【VB.NET】App.configにファイ...
-
vb.netでの記述方法について 以...
-
パソコンの、エラーって誰が作...
-
バッチで当日日付で作成される...
-
連想配列を配列に格納したいで...
-
C#からvbsを実行したい
-
VBAでPDFを作成する際、同じ名...
-
ITSP番号って何ですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルに張り付けた写真のフ...
-
onedrive にexcelファイルをア...
-
【VB.NET】App.configにファイ...
-
VB.NET Excelを読み込んでDataT...
-
キヤノン アソビカメラ iNSPiC ...
-
Windows10にデュアルブートでXP...
-
VBAでPDFを作成する際、同じ名...
-
phpのファイルがブラウザで開か...
-
【VB.NET】Excelの最終行までの...
-
ffftpでファイル取得が0バイト...
-
Excelでボタン(フォームコント...
-
vba 空のデータをSplitする時の...
-
VB.NETでMSComm が追加できず?
-
C#からvbsを実行したい
-
aspxをhtmlに変換する方法について
-
asp.netにてgridviewの列を動的...
-
連想配列を配列に格納したいで...
-
Wi-Fiのパスワードが指定なしと...
-
VBAのRegExpで後方一致/不一致...
-
”KINGSOFT WPSのVBエディタ画面...
おすすめ情報