今画像ファイルの整理をしているのですが、1から200まで連番をふりたいと考えています。
ですが、現状ファイル名の命名規則がバラバラに成っており困っています。
具体的には、桁数によって以下のように異なっています。
一桁 1-ファイル名.jpdg
二桁 12-ファイル名.jpeg
三桁 210-ファイル名.jpeg
この冒頭の数字を全て三桁にし、1→001、12→012という形に変更したいのですが
ファイル数が多いため、1個ずつファイル名を変更して0を加える方法だと時間がかかります。
一括してこのファイル名の数字を3桁に変更するいい方法があれば教えて下さい。
No.10ベストアンサー
- 回答日時:
No9ですが、あった~、
>、"#03#"指定でできんですかね? まあ、仕
http://www.lightship.co.jp/FileVisor7/help/opera …
バージョン7 の操作説明書みたいですね。ファイル名の一部を使用して連番する機能ではないですね。正規表現が使えるようなので、マクロ(内部スクリプト)があれば、できるかもしれないね。まあ、普通に考えれば、検索などツール上でファイルの絞込みに使われるのでしょう。
単純な連番には対応しているので、Windowsのエクスプローラーで全部選択して名前変更で、できる連番以外なら有効につかえるでしょう。
もっと使い方を学ばないと、確かな事は言えませんが。そこで、もう少し見てみると
http://www.lightship.co.jp/FileVisor7/help/opera …
に置き換え機能があるので、正規表現が使えそうだが、これと「連番で名前を変更する」機能を組み合わせたスクリプトが組めればいいのだが? どこかの説明に「マクロ」と記述されていた。が、メニュー見ても付属ツールみてもマクロらしきものが無い。
となる。そこまでして、使いこなすほどのソフトなんですかね? これならエクセルとVBAを取得してもらった方がよっぽど会社のためになるが。
No.9
- 回答日時:
http://www.lightship.co.jp/FileVisor6/help/overv …
http://anago.2ch.net/test/read.cgi/software/1352 …
この辺だろうか。まあ、よくある問題のあるアプリね。一時総務課でつかっていたなあ~~~~
7が出てよくなったのだろうか? アプリでやると、使い込んでいないと、逆にどううしよもなく、できないことがたくさん(笑う)。
私も、わたされたが、まあ開発環境やサーバーには入れならないね。ライセンスがもったいない。
この程度の問題、金かけてどうするんでしょうね。うちの会社なら、内緒で買うか、個人で買うか。総務かも今では誰も使っていないし、なので6までしかないけどね。
ちなみに、質問内容だと「このファイル名の数字を3桁」となっていて、元のファイル名に在る数字にゼロをつけたいようなんだけど、"#03#"指定でできんですかね? まあ、仕様が明確に書いていないので、適当に割り振っても正解かもしれませんがね。
https://www.google.co.jp/search?hl=ja&q=FileViso …
まあ、金余って土地勝ったり、保養所たてたりするような会社なら買ってもらえるでしょうね。。まあ、それでもサーバーとか開発環境には入れたくないアイテムだね。ましてや事務専門職にしか用がないアイテムじゃね。昔のように、マシン購入時にこっそり稟議書にまぎれこませて買うしかないだろうね。「これなんだね君。」「はいテストで使います。自動化のためのソフトです」
http://www.gizcollabo.jp/vbtomo/log/archive/vbqa …
この程度に、初心者でも挑戦しているようなロジックなので、入門編としては最適でしょう。
まずは、何もマシンに追加しない状態で何ができるか、考えましょう。perl入れたら、そのメンテナンスしないとだめだし、過去入れて、「これ、削除していんですか?」なんて事務職員がよく聞いてくる。そんな面倒にならないように気おつけましょう。
No.8
- 回答日時:
Windows用のファイル管理ツールにはそういうことが一括で出来る機能を有したものがあります。
私がそれを使用しているのですが、表示するときはゼロサプレスされていないファイル名でも順番通り表示されるので、リネームするファイルを選択状態にし、右クリックで「連番で名前を変更」を選択。
リネームするファイルの規則を入力して実行するとあっという間に希望通りの結果になります。
※リネーム規則に「#03#-ファイル名.jpg」とするとゼロサプレスした連番が付与されます。
もちろん、Perlなどのスクリプトを使用しても実現できます。
でも、実行して失敗すると更に取り返しの付かない状態になるので(笑)、失敗してもいいようにコピーしてから試しましょう。
ちなみに私が使用しているファイル管理ソフトは「FileVisor」という有償ソフトです。
No.7
- 回答日時:
No6ですが、
まだ質問が閉じられていないようなので訂正と追加を。
6行目の
>for %%a in ("*.jpg" "*,jpeg" "*.jpdg")
で、"*,jpeg" => "*.jpeg" ですね。カンマになっていましたね。でJScriptもサンプルを変更してちょこっと作成してみました。
-------- c.js -----------
/*
パラメーターにフルパスを指定しない場合、実行時のカレントフォルダーのみを検索して変更する。
*/
var s = new ActiveXObject("Scripting.FileSystemObject");
try{
var path = WScript.Arguments.Unnamed.Item(0);
} catch(para_er){
var path = s.GetAbsolutePathName(".");
}
// 探知用正規表現変数作成
var MyReg = new RegExp().compile("^([0-90-9]*)[-‐]");
// 拡張子で対象とするファイルのフィルター用正規表現変数作成。対象外は削除すること。
var MyRegExt = new RegExp().compile("(jpg|jpe|jpeg|jpdg)","i");
// 指定されたパスからファイルオブジェクトのコレクションを取得
var tfiles = new Enumerator(s.GetFolder(path).files);
// ファイルの処理
for (;!tfiles.atEnd();tfiles.moveNext()) {
var file=tfiles.item();
var ext = s.GetExtensionName(file.Name);
if(null != ext.match(MyRegExt)){
WScript.echo("file=" + file.Name + " ext=[" + ext + "]");
// 探知
//var hits = file.Name.match(MyReg);
// MyReg.Execute(file.Name);
var hits = MyReg.exec(file.Name);
if(null != hits){
if("" != hits[1]){
var tmp1="000" + hits[1];
var tmp2=tmp1.substring((tmp1.length -3), (tmp1.length + 1));
WScript.echo("hits=[" + hits[1] + "] fix=" + tmp2 + " RegExp.rightContext=" + RegExp.rightContext + "\n");
try{
// ファイル名変更
// file.Name = tmp2 + "-" + RegExp.rightContext;
}catch(ren_er){
// 変更時のエラー処理。下記は仮に同名ファイルが存在した場合
// file.Name = tmp2 + "b-" + RegExp.rightContext;
}
}
}
}
}
-------------------------
やはり5分程度で作成したので前回と同様、どこかにケアレスミスがありましたら、どうもすみません。適当に編集して作り変えてください。特に // でコメントアウトしている「ファイル名変更」はコメントアウトを外さないと名前が変更されません。
コマンドプロンプトを起動し
>cscript //nologo "指定フォルダー フルパス"
で実行することを想定しています。それで、一度リストを作成し、どのように変更されるかファイルに保存してからエディターなどで確認してから実行しましょう。
サブフォルダー以下も検索したければ、自分で改変してください。まあ、パスを指定すればできるので、変えなくてもできますが・・・
今日は特に暇だったので、大サービスです。
No.6
- 回答日時:
私は、No3と同じで アプリ派です。
こちらの方が、とても使い勝手があり、いろんな場合に対応可能です。ただ、会社だと今フリーのソフト系は禁止であることが多く、承認が必要となり面倒なので、会社では、使いまわしが簡単なBATを作成させていました。初期の頃はNo4,5さんと同じようにVBS 又はJScript で作らせていましたが、最終的に、
JScript
DOSによるBAT
が残りました。JScriptは新人教育すると、文系の人でもなじみがあることが理由ですね。VB系は確かに学校で習うようですが、個人ではJavaScriptの使用経験が断然多いようです。
で、さらに問題になったのが、CUIでの経験のなさでPATHと言う単語も機能も理解していない。そんなのありえないだろう。と思う方がいると思うが、実はそうなんです。それが実態。そこで、DOSでのBATか、CScriptでの実行を命じています。これは教育をかねての事です。
で、そのサンプルを使用して、5分程度で作ってみました。
------- a.cmd -------
@echo off
setlocal
set pic=0
set total=0
for %%a in ("*.jpg" "*,jpeg" "*.jpdg") do (
call :Permute "%%a"
)
echo\
echo ReName file Count = %pic%
echo Total Count = %total%
goto :EOF
:Permute
set /a total+=1
set _tmp_name=%~n1
for /f "tokens=1,* delims=-‐" %%b in ("%~1") do (
echo %total%
echo %1
set _tmp_moji1=%%b
set _tmp_moji2=%%c
)
rem echo b=[%_tmp_moji1%]
rem echo c=[%_tmp_moji2%]
set _tmp_moji3=000%_tmp_moji1%
set _tmp_moji4=%_tmp_moji3:~-3%
rem echo _tmp_moji4=[%_tmp_moji4%]
rem 変更後のファイル名をセット
set _tmp_moji5=%_tmp_moji4%-%_tmp_moji2%
echo _tmp_moji5=[%_tmp_moji5%]
echo\
rem ファイル名を変更する
rem ren %1 %_tmp_moji5%
goto :EOF
endlocal
------------------
エラー処理や、多様なケースには対応していません。自分で勉強して追加してください。また、これは使い回しが容易にできるように元のパターンを崩さずに作っていますので、余計な処理というか書式になっています。
echo はでバック用として使ってください。変数チェックですね。
rem がコメントアウトなので、「ファイル名を変更する」の直下の rem を削除すると、実際にファイル名を変更してしまいます。
上記の実行には条件があり、
これは、DOS窓を起動し、対象フォルダーに移動して、そこで実行する事。区切り文字は「三桁 210-ファイル名.jpeg」のサンプルにある半角又は全角のハイフンを使用しています。拡張子は、意味不明だったので、多数列挙しています
DOSコマンドをよく理解したうえで使いまわしてください。
新人教育はこの質問のよな課題をだしています。あれ、これもその課題ですかね????? これを卒業すると、初めてエクセルやパワーポイントなどのVBAに移ります。VBAを教えるわけではなく、操作と自動化というテーマですね。
No.5
- 回答日時:
'すみません.
'訂正します。 ファイル名のハイフンは半角の"-"であることが条件です。
Option Explicit
Const FOLDERPATH = "d:\test" '←名前を変更したいファイルが格納されているフォルダー名を指定(必ずフルパスで)
Dim oFSO
Dim oFolder
Dim oFile
Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(FOLDERPATH)
Dim sOldFName
Dim sNewFName
Dim sPriName
Dim sSufName
dim sfo, gfile
set sfo = createobject("scripting.filesystemobject")
For Each oFile In oFolder.Files
sOldFName= oFile.Name
sPriName = Left(sOldFName,Instr(sOldFName,"-")-1) ' "-"が←全角の場合は"-"に変更してください
sSufName = Right(sOldFName,len(sOldFname)-Instr(sOldFName,"-")+1) ' "-"が←全角の場合は"-"に変更してください
sNewFName = Right("00" & sPriname ,3) & sSufName
If sNewFName <> sOldFName then
'WScript.Echo sNewFName
set gfile = sfo.getfile(FOLDERPATH & "\" & sOldFName)
gfile.name = sNewFName
End If
Next
No.4
- 回答日時:
'ツールも何もいりません。
メモ帳があれば簡単にできます。VBScriptをちょこっと作ってみました。'まずは、下のd:\testを、質問者さんのファイルが保存されているフォルダに書き換えてください。
'次に、この回答をメモ帳にコピーして、henkou.vbs等に拡張子を変えて保存してください。
'保存したhenkou.vbsをダブルクリックして実行すると全て1.txt→001.txt、 12.jpg→012.jpg等のように3桁にファイル名が変わります。
'ただし、ご質問に書いてある条件以外の例外があった場合は、動作保証はしません。
'やり直しがきかないので、かならず、ファイルのバックアップをしてから行ってください。
Option Explicit
Const FOLDERPATH = "d:\test" '←名前を変更したいファイルが格納されているフォルダー名を指定(必ずフルパスで)
Dim oFSO
Dim oFolder
Dim oFile
Set oFSO = WScript.CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(FOLDERPATH)
Dim sOldFName
Dim sNewFName
Dim sPriName
Dim sSufName
dim sfo, gfile
set sfo = createobject("scripting.filesystemobject")
For Each oFile In oFolder.Files
sOldFName= oFile.Name
sPriName = Left(sOldFName,Instr(sOldFName,".")-1)
sSufName = Right(sOldFName,len(sOldFname)-Instr(sOldFName,".")+1)
sNewFName = Right("00" & sPriname ,3) & sSufName
If sNewFName <> sOldFName then
'WScript.Echo sNewFName
set gfile = sfo.getfile(FOLDERPATH & "\" & sOldFName)
gfile.name = sNewFName
End If
Next
No.3
- 回答日時:
リネームソフト使えば一瞬ですよ。
大抵のソフトが桁数指定しての連番処理には対応しています。
http://www.forest.impress.co.jp/library/software …
http://www.vector.co.jp/vpack/filearea/win/util/ …
No.2
- 回答日時:
昔の富士フィルムのfinpixviwerには
画像ファイル名を一括で連番に変更する
機能がありました。
質問者さんのご要望通りの変更になります。
今でも、そういうソフトは探せばあると思います。
No.1
- 回答日時:
3桁のものはいじらないのですね。
そうであればいじるのは1桁と2桁のものだけ。
そうなると数はそう多くはないので手作業で付け加えたほうが早いかも。(最大でも99個?)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
ftp処理でmove(移動)を行いたい
-
コマンドプロンプトで変数が数...
-
【DOSバッチ開発】末尾のタブの...
-
フォルダ内の更新日時が一番新...
-
バッチファイルで、iniファイル...
-
ファイル名の頭5桁と同名のフォ...
-
コマンドプロンプトでファイル...
-
[DOS] コピー先に同じファイル...
-
サブフォルダからファイルをコ...
-
.batでファイル名から抽出して...
-
ExcelVBAのDirでスペース含むフ...
-
ファイル名を一括してリネーム...
-
ファイル名を該当フォルダ内か...
-
ファイル名に ” を使うと エク...
-
バッチコマンドでファイル名の...
-
aタグのhrefにネットワークパス...
-
コマンドでファイルコピーする...
-
ファイル名を変更して移動させ...
-
コマンドプロンプトでのCSV...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドプロンプトの「%1」と...
-
[DOS] コピー先に同じファイル...
-
ftp処理でmove(移動)を行いたい
-
コマンドプロンプトでファイル...
-
バッチファイルで、iniファイル...
-
コマンドプロンプトで変数が数...
-
フォルダ内の更新日時が一番新...
-
ExcelVBAのDirでスペース含むフ...
-
.batでファイル名から抽出して...
-
サブフォルダからファイルをコ...
-
バッチコマンドでファイル名の...
-
ファイル名を該当フォルダ内か...
-
ファイル名の頭5桁と同名のフォ...
-
【DOSバッチ開発】末尾のタブの...
-
ファイル名に ” を使うと エク...
-
aタグのhrefにネットワークパス...
-
word VBA ファイル名 保存
-
前日日付のファイルGETバッチ
-
DOSのバッチ作成について‐FORの...
-
コマンドでファイルコピーする...
おすすめ情報