0

親フォルダー+祖父母フォルダー名でラベル付けする必要があるファイルを含むサブフォルダーを持つ複数のフォルダーがあります。

つまり、Folder 1>Folder 2>File.jpg の名前を Folder_1_Folder_2_File.jpg に変更する必要があります。

ある程度それを行うスクリプトを見つけることができ、それをリバース エンジニアリングしようとしましたが、うまくいきません。以下のスクリプトには 2 つの課題があります。1) ルート ディレクトリからのパス全体が含まれていることと、2 つ目は、ファイルの名前を削除しているため、エラーが発生する前に 1 つのファイルの名前のみを変更できることです。スクリプトがファイル全体の名前を変更していることが問題であることはわかっていますが、どうすればよいかわかりません。

tell application "Finder"
set a to every folder of (choose folder)
repeat with aa in a
    set Base_Name to my MakeBase(aa as string)
    set all_files to (every file in aa)
    repeat with ff in all_files
        set ff's name to (Base_Name & "." & (ff's name extension))
    end repeat

end repeat
end tell

to MakeBase(txt)
    set astid to AppleScript's text item delimiters
    set AppleScript's text item delimiters to ":"
    set new_Name_Raw to every text item of txt
    set AppleScript's text item delimiters to "_"
    set final_Name to every text item of new_Name_Raw as text
    set AppleScript's text item delimiters to astid
    return final_Name
end MakeBase

ありがとうございました!

4

2 に答える 2

1
tell application "Finder"
    repeat with theItem in (the selection as list)
        set theItem's name to (theItem's container's container's name) & "_" & (theItem's container's name) & "_" & (theItem's name)
    end repeat
end tell

AppleScriptがアプリでどのように機能するかを知りたい場合は、アプリのAppleScriptコマンドの辞書を調べてください(AppleScriptエディター>ファイル>辞書を開く...)。

編集1

名前を変更するアイテムを含むフォルダーを含む「祖父母フォルダー」を選択するバージョンは次のとおりです。

tell application "Finder"
    set itemsToRename to {}
    set selectedFolders to (the selection as list)
    repeat with selectedFolder in selectedFolders
        set childFolders to every item of selectedFolder
        repeat with childFolder in childFolders
            set grandchildItems to every item of childFolder
            set itemsToRename to itemsToRename & grandchildItems
        end repeat
    end repeat

    repeat with theItem in itemsToRename
        set theItem's name to (theItem's container's container's name) & "_" & (theItem's container's name) & "_" & (theItem's name)
    end repeat
end tell
于 2013-02-21T02:12:57.393 に答える
0

試す:

set myFolder to do shell script "sed 's/\\/$//' <<< " & quoted form of POSIX path of (choose folder)
set myFiles to paragraphs of (do shell script "find " & quoted form of myFolder & " \\! -name \".*\" -type f -maxdepth 2 -mindepth 2")
repeat with aFile in myFiles
    tell application "System Events" to set file aFile's name to (do shell script "sed 's/.*\\/\\([^/]*\\)\\/\\([^/]*\\)\\/\\([^/]*$\\)/\\1_\\2_\\3/' <<< " & quoted form of aFile)
end repeat
于 2013-02-21T04:58:33.170 に答える