No.2ベストアンサー
- 回答日時:
以下のようなスクリプトを作成してください。
(ファイル名をsample.vbsとします)--------------------------------------
'当該ファイルと同じディレクトリ下のすべての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")
WScript.Echo " " & objFile.Name & "-->" & newName & " Rename対象"
oldPath = objFile.Path
newPath = objFSO.GetParentFolderName(oldPath) & "\" & newName
if objFSO.FileExists(newPath) then
WScript.Echo "既にリネーム後の同一ファイルが存在するのでスキップします"
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
-----------------------------------------------
sample.vbsを画像ファイルと同じフォルダに置いてください。
sample.vbsをダブルクリックしてください。ファイル名がリネームされます。
念の為、最初は、画像ファイルのバックアップをとってから実行してください。
実行中に確認用メッセージが表示されますが、不要であれば、コメントアウトしてください。
以下の2行です。
WScript.Echo " " & objFile.Name & "-->" & newName & " Rename対象"
WScript.Echo "既にリネーム後の同一ファイルが存在するのでスキップします"
行の先頭に'(シングルクオート)を付けるとコメントになります。
No.1
- 回答日時:
補足要求です。
質問1:バッチファイル(拡張子:bat)での作成を望まれていますが、バッチファイルで実行するには
荷が重すぎます。VBScript(拡張子:vbs)で作成しても良いでしょうか?
VBScript(拡張子:vbs)でも、それをダブルクリックする同様の処理ができます。
上記でYesの前提で、以下の質問です。Noの場合は以下の質問は無視してください。
質問2:JPG画像の拡張子はjpgでしょうか、それともjpegでしょうか、それとも両方でしょうか?
質問3:ファイル名の末尾4桁を削除したいということですが、無条件に削除すると以下のような
事態が予想されます。(拡張子がjpgの前提)
ファイル名:abcdefg( 1).jpg の場合、
1回目のバッチ処理の実行後:abcdefg.jpg ・・・期待する結果
2回目のバッチ処理の実行後:abc.jpg ・・・たぶんこれは期待しない結果
3回目のバッチ処理の実行後:abc.jpg ・・・末尾が5桁以上でないので処理しない。これは期待する結果
上記のようなことが発生してもよいなら、無条件に末尾4桁削除で行いますが、
たぶん、2回目のときは、abcdefg.jpgが期待する結果かと思われます。
つまり、1回目のバッチ処理の実行後は、以降はファイル名を変更したくないということです。
上記を実行するためには、末尾4桁の削除ではなく、末尾に"("+任意の文字+")"があれば、
それを()を含めて削除するほうが良いかと思いますがいかがでしょうか。
例:
abc( 123).jpg は abc.jpgに変更
abc( ).jpg は abc.jpgに変更
abc().jpg は abc.jpgに変更
abcdef.jpgは変更なし
説明不足ですいません。
>>VBScript(拡張子:vbs)でも、それをダブルクリックする同様の処理ができます。
それをフォルダに入れてダブルクリックで処理できるならVBScriptでも大丈夫です。
>>JPG画像の拡張子はjpgでしょうか、それともjpegでしょうか、それとも両方でしょうか?
拡張子はjpgです。
>>質問3
質問3はまさにその通りです。なので、末尾4桁の削除ではなく、末尾に"("+任意の文字+")"があれば、
それを()を含めて削除するでお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) 【マクロ】フォルダを2つのモニターの定位置に並べたい 2 2022/09/02 01:14
- Visual Basic(VBA) 指定した文字から指定した文字のスペースまでを削除するVBAの構文について 6 2022/07/24 22:20
- Excel(エクセル) 【マクロ】フォルダを3つ、POモニター上に、決まった並べ方をしたい 4 2022/08/31 11:05
- Excel(エクセル) Excelの複数置換はSUBSTITUTEを重ねるしかない? 9 2022/05/08 11:25
- Windows 10 コマンドプロンプトの使い方 1 2022/10/13 14:43
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Excel(エクセル) 【VBA】ファイルパスに半角スペースが入ると、VBAが動かない 5 2022/08/04 20:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
.batでファイル名から抽出して...
-
コマンドプロンプトでファイル...
-
[DOS] コピー先に同じファイル...
-
コマンドプロンプトで変数が数...
-
window コマンドでファイルサイ...
-
ExcelVBAのDirでスペース含むフ...
-
フォルダ内の更新日時が一番新...
-
【DOSバッチ開発】末尾のタブの...
-
ftp処理でmove(移動)を行いたい
-
コマンドプロンプトまたはpower...
-
バッチファイルでファイルを置換
-
Windowsコマンドプロンプトで、...
-
バッチファイルで同一フォルダ...
-
ExifToolでの文字化け対策
-
バッチコマンドでファイル名の...
-
access,vbaでフォルダ内のファ...
-
batファイルでdirコマンドでフ...
-
ファイル名を該当フォルダ内か...
-
エクセルVBAを使用してJPGファ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトでファイル...
-
バッチファイルで、iniファイル...
-
バッチコマンドでファイル名の...
-
コマンドプロンプトで変数が数...
-
[DOS] コピー先に同じファイル...
-
フォルダ内の更新日時が一番新...
-
ftp処理でmove(移動)を行いたい
-
ExcelVBAのDirでスペース含むフ...
-
.batでファイル名から抽出して...
-
DOSのバッチ作成について‐FORの...
-
access,vbaでフォルダ内のファ...
-
Windowsコマンドプロンプトで、...
-
【DOSバッチ開発】末尾のタブの...
-
word VBA ファイル名 保存
-
【vbs】ファイル名の検索と該当...
-
コマンドプロンプトまたはpower...
-
ファイル名を該当フォルダ内か...
-
バッチ処理で16進数でファイル...
-
スタートアップのファイルをバ...
おすすめ情報