DTP駆け込み寺
  1. [20627] ファイル名の変更について meg 2021/10/12 12:33 *
    1. [20629] Re: ファイル名の変更について (z-) 2021/10/13 11:50
    2. [20632] Re: ファイル名の変更について エスパー魔美 2021/10/13 13:16
    3. [20633] Re: ファイル名の変更について az 2021/10/13 14:40
    4. [20634] Re: ファイル名の変更について (z-) 2021/10/13 14:48
      1. [20636] Re^2: ファイル名の変更について az 2021/10/13 17:18
    5. [20647] Re: ファイル名の変更について meg 2021/10/15 13:15

[ 返信 ]

ファイル名の変更について

ファイル名の変更について

添付のような構造のデータが大量にあります。
フォルダ名に分類があり、最下層のファイルが数字のみなのですが
数字のみのファイルに、たとえば

ネコひげ01.png

など、フォルダ名を付加する方法などないでしょうか?
数千ファイルあり途方にくれております。
よろしくお願いいたします。

[20627] meg (2021/10/12 Tue 12:33)

[ 返信 ]


Re: ファイル名の変更について

回答を待つとすれば、リネームアプリの紹介かOSのスクリプトになると思うので
環境書いておいたほうがいいですよ。
MacかWinかすらわからないことには。

[20629] (z-) (2021/10/13 Wed 11:50)

[ 返信 ]


Re: ファイル名の変更について

添付画像がmacの様なのでアップルスクリプトで作りました。
数字+拡張子のファイルを2階層分のフォルダ名+アンダーバーを付加します。

on open _List
set n_list to number of (_List)
repeat with i from 1 to n_list
set i_List to item i of _List as Unicode text
set i_path to POSIX path of i_List

if i_path ends with "/" then --フォルダ
--数字+拡張子のファイルのファイルを検索
set findOpt to " -regex '.*/([0-9]*\\..*)$' -type f"
set cmd to "find -E " & quoted form of i_path & findOpt
set FileList to do shell script cmd

set n_FileList to number of (every paragraph of FileList)
repeat with j from 1 to n_FileList
set j_filePath to paragraph j of FileList
--スラッシュが重複するので整形
set cmd_Perl to "echo " & quoted form of j_filePath & " | perl -pe 's:/+:/:g;'"
set j_filePath to do shell script cmd_Perl
--リネームルール:フォルダ2階層分をファイル名に付加する
set cmd_Perl to "echo " & quoted form of j_filePath & " | perl -pe 's:^(.*)/(.*)/(.*)/(.*)$:$1/$2/$3/$2_$3_$4:g;'"
set reName to do shell script cmd_Perl
--リネーム実行
do shell script "mv " & quoted form of j_filePath & space & quoted form of reName
end repeat
end if
end repeat
end open

[20632] エスパー魔美 (2021/10/13 Wed 13:16)

[ 返信 ]


Re: ファイル名の変更について

javascriptで書きました。
ファイル取得は↓「フォルダからindd.を検索して」の(z-)さんの関数を使わせてもらいました。

var folderObj = Folder.selectDialog("フォルダを選択してください");
if(folderObj== null) exit();
var fileList = [];
findPNG(folderObj);
for (var i = 0; i < fileList.length; i++){
var P=fileList[i].parent.parent.name;
var P2=fileList[i].parent.name;
fileList[i].rename(P+P2+fileList[i].name)
}
alert("完了");

function findPNG(dir){
var files = dir.getFiles();
for(var i = 0; i < files.length; i++){
if(files[i].displayName.match(/\.png$/i)){
fileList.push(files[i]);
}
if(files[i].constructor.name == "Folder"){
findPNG(files[i]);
}
}
}

[20633] az (2021/10/13 Wed 14:40)

[ 返信 ]


Re: ファイル名の変更について

お二人すばらしいですw
azさんの書かれたJavaScriptは何から実行するやつでしょうか?

[20634] (z-) (2021/10/13 Wed 14:48)

[ 返信 ]


Re^2: ファイル名の変更について

macOS SierraでまだExtendScript Toolkit使ってます。
InDesignのつもりで書きましたが、IllustratorとPhotoshopも動きました。CC2019です。

[20636] az (2021/10/13 Wed 17:18)

[ 返信 ]


Re: ファイル名の変更について

エスパー魔美様
az様
(z-)様

動揺して環境の記載も忘れた状態でしたのに、素晴らしい対処法をいただきましてありがとうございました! スクリプトはネット上で色々なかたが制作されているのを使用はしているものの、自分で一から書くのはなかなかハードルが高いので、本当に助かりました。

[20647] meg (2021/10/15 Fri 13:15)