1

ファイルの名前を変更しようとしています。「表示名」プロパティを変更できれば、十分に単純なようです。しかし、私はこのエラーを受け取り続けます:

Can't set displayed name of alias "Path:to:file:" to "New_name"

これが私が使用しているフォルダーアクションスクリプトです(つまり、保存されたapplescriptを使用し、フォルダーアクションセットアップサービスを使用してフォルダーに割り当てました)。

on adding folder items to this_folder after receiving these_items
    try
        repeat with this_item in these_items
            tell application "Finder" to set displayed name of this_item to "New_Name"
        end repeat

    on error error_message number error_number
        display dialog error_message buttons {"Cancel"} default button 1 giving up after 120
    end try
end adding folder items to

私が見つけたすべてのスクリプトは、似たようなことをします(たとえば、この質問)。最初に「name」プロパティを取得してから、拡張子を削除します。むしろ、「表示された名前」プロパティに直接移動したいと思います。

4

2 に答える 2

3

ファイルにFinderで認識されない拡張子が含まれている場合、またはすべての拡張子の表示が有効になっている場合は、表示される名前に拡張子を含めることができます。

以前の拡張機能を追加することはそれほど複雑ではありません。

tell application "Finder"
    set f to some file of desktop
    set name of f to "New_name" & "." & name extension of f
end tell

これは、ファイルに拡張子がない場合、または拡張子がFinderによって認識されない場合にも機能します。

set text item delimiters to "."
tell application "Finder"
    set f to some file of desktop
    set ti to text items of (get name of f)
    if number of ti is 1 then
        set name of f to "New_name"
    else
        set name of f to "New_name" & "." & item -1 of ti
    end if
end tell

Automatorを使用してフォルダーアクションを作成した場合は、次のようなシェルスクリプトの実行アクションを使用できます。

for f in "$@"; do
    mv "$f" "New_name.${f##*.}"
done
于 2012-12-27T12:22:51.177 に答える
1

Lauir Ranta の答えはFinderに対して正しいです。

しかし、私のコメントを投稿した後、システム イベントは Finder よりも少し深く物事を見ていることを思い出しました。

そこで、名前をFinderからシステム イベントに変更するコマンドを交換しました 。

以前、「someFile.kkl」という名前のファイルがあり、拡張子が作成されたばかりでした。 Finderは拡張子に "" を返し、拡張子なしでファイルの名前を変更します。"新しい名前"

しかし、 システム イベント がそれを行うと、拡張子が表示され、名前が「newName.kkl」に設定されます。

tell application "Finder" to set thisFile to (item 1 of (get selection) as alias)


tell application "System Events"
    if name extension of thisFile is "" then

        set name of thisFile to "newName"
    else
        set name of thisFile to ("newName" & "." & name extension of thisFile)

    end if

end tell

フォルダ アクションで設定します。

on adding folder items to this_folder after receiving these_items
    try
        repeat with this_item in these_items
            tell application "System Events"
                if name extension of this_item is "" then

                    set name of this_item to "new_Name"
                else
                    set name of this_item to ("new_Name" & "." & name extension of this_item)

                end if

            end tell
        end repeat

    on error error_message number error_number
        display dialog error_message buttons {"Cancel"} default button 1 giving up after 120
    end try
end adding folder items to
于 2012-12-31T11:15:23.423 に答える