файл копируется в определенную папку и переименовывается в x.txt как мне открыть x.txt и вставьте «X:»

#applescript

#applescript

Вопрос:

РЕДАКТИРОВАТЬ: regulus6633 создал скрипт, который намного лучше, чем мой план ниже, он отлично работает, если ваш файл шаблона не полностью пуст (я думаю, что изначально это вызвало ошибку). Спасибо!

Предполагается, что этот скрипт (1) копирует x.txt для определенной папки переименуйте ее в new_name, (2) откройте ее, (3) вставьте «new_name» заглавными буквами и (4) вставьте «:», за которым следует return amp; return. Первая часть работает, но у меня возникли проблемы с определением (2), (3) и (4). Код, который я написал до сих пор, вставлен ниже.

  tell application "Finder"
        display dialog "new_name_dialogue" default answer " "
        set new_name to (text returned of result)
        set Selected_Finder_Item to (folder of the front window) as text
        duplicate file "Q:x:7:n7:GTD scripting:template folder:x.txt" to "Q:X:7:SI:SIAG1"
        set Path_Of_X to "Q:X:7:SI:SIAG1:" amp; "x.txt" as string
        set name of file Path_Of_X to (new_name as text) amp; ".txt"
#[something that let's me open the file is needed here]
#[something that pastes "new_name" amp; ":" in ALL CAPS]
#[something that inserts two lineshifts]
    end tell
  

Ответ №1:

В общем, поскольку вы имеете дело с текстовым файлом, вам не нужно «открывать» файл в приложении и вставлять текст. Мы можем читать и записывать в текстовые файлы непосредственно из applescript. Таким образом, мы считываем текст из файла шаблона, добавляем к нему любой текст, который мы хотим, а затем записываем новый текст в новый файл. Если затем вы захотите открыть и просмотреть новый файл, вы можете сделать это позже. Я сделал это в разделе «TextEdit» кода.

Вы можете видеть в конце скрипта, что у меня есть подпрограммы для записи текстового файла, а также для изменения имени файла на CAPS. Итак, попробуйте следующее…

 -- initial variables
set templateFile to "Q:x:7:n7:GTD scripting:template folder:x.txt"
set copyFolder to "Q:X:7:SI:SIAG1:" -- notice this path ends in ":" because it's a folder

-- get the new name
display dialog "new_name_dialogue" default answer ""
set newName to (text returned of result)
set newPath to copyFolder amp; newName

-- get the text of the template file
set templateText to read file templateFile

-- add the file name in CAPS, a colon, and 2 returns at the beginning of templateText
set capsName to upperCase(newName)
set newText to capsName amp; ":" amp; return amp; return amp; templateText

-- write the newText to newPath
writeTo(newPath, newText, text, false)

-- open the new file in textedit
tell application "TextEdit" to open file newPath



(*============== SUBROUTINES ==============*)
on writeTo(targetFile, theData, dataType, apendData)
    -- targetFile is the path to the file you want to write
    -- theData is the data you want in the file.
    -- dataType is the data type of theData and it can be text, list, record etc.
    -- apendData is true to append theData to the end of the current contents of the file or false to overwrite it
    try
        set targetFile to targetFile as text
        if targetFile does not contain ":" then set targetFile to POSIX file targetFile as text
        set openFile to open for access file targetFile with write permission
        if apendData is false then set eof of openFile to 0
        write theData to openFile starting at eof as dataType
        close access openFile
        return true
    on error
        try
            close access file targetFile
        end try
        return false
    end try
end writeTo

on upperCase(theText)
    set chrIDs to id of theText
    set a to {}
    repeat with i from 1 to (count of chrIDs)
        set chrID to item i of chrIDs
        if chrID ≥ 97 and chrID ≤ 122 then set chrID to (chrID - 32)
        set end of a to chrID
    end repeat
    return string id a
end upperCase
  

Комментарии:

1. вау! большое спасибо, это красиво сделано, очень читаемо (даже для новичка) и ПРОСТО РАБОТАЕТ! (мой исходный файл шаблона x.txt был совершенно пуст, мне пришлось вставить в него сдвиг строки, чтобы он работал)

Ответ №2:

здесь нужно что-то, что позволяет мне открыть файл

 tell application "TextEdit" to open Path_Of_X
  

что-то, что вставляется new_name во ВСЕ ЗАГЛАВНЫЕ буквы

Существует действительно хорошее стороннее дополнение для создания сценариев (Satimage OSAX), которое вы можете использовать для подобных вещей (это будет работать, только если вы загрузили дополнение для создания сценариев)…

 set UPPER_CASE to uppercase new_name amp; ":"
  

что-то, что вставляет два сдвига строк

 return amp; return