2014-02-26 52 views
0

前言:我的Applescript需要一個Excel文件,並將其數據複製到一個新的純文本文件中。AppleScript:Write New File Without Old Filename

我無法在與現有Excel文件相同的位置編寫新的文本文件,但沒有原始文件的文件名。

例如:我的Excel文件是「FilenameA.xls」當我救我的新的文本文件,它保存爲「FilenameA.xlsFilenameB.txt」

我怎麼能這個新的文件保存到同一位置,但與我自己的文件名?

注意:它在我使用(path to desktop as text)時有效,但我並不總是將這些保存到我的桌面。

set myFile to open for access (path to desktop as text) & blahBlah & ".txt" with write permission 

當我嘗試下面的腳本,它給了我原來的文件名加上我的新文件名。

set myFile to open for access (fileName) & blahBlah & ".txt" with write permission 

注:fileName指原始Excel文件的路徑。

本質上我想要得到與(path to desktop as text)相同的結果,但可以靈活地將文件保存到訪問原始文件夾的任何文件夾中。

回答

1

謝謝您澄清您的請求。基本上,您需要在代碼中添加「容器」行,並在新文件路徑名中使用該行。如果你發佈了更多的代碼,我可以適應它的語法,但這應該足以讓你弄清楚。 下面是一些示例代碼,使您可以選擇一個Excel文件,收集該文件的容器,會提示您輸入新的文件名,然後允許你寫新的txt文件:

set excelFile to (choose file with prompt "Choose Excel file :" of type {"xls", "xlsx"} without invisibles) 

tell application "Finder" 
    set containerPath to (container of excelFile) as string 
    set oldFilename to name of excelFile 
end tell 

set newFilename to text returned of (display dialog "Enter name of the resulting text file" default answer oldFilename) 

set myFile to open for access (containerPath & newFilename & ".txt") with write permission 
try 
    -- add content to myFile 
    write "Here's some groovy content added to the file." to myFile 
    close access myFile 
on error 
    close access myFile 
end try 
+0

我的問題是,我使用的是從原始文件的路徑保存新文件。當我用'open for access'使用路徑時,它將原始文件名放在我的自定義參數前面。我希望我的新文件能夠承載我選擇的文件名。 – pianoman

+0

我編輯了這個問題,以更好地反映我的意圖。這有幫助嗎? – pianoman

+0

是的,有益的澄清。修改後的答案中的示例代碼應爲您解決問題。 – jweaks

0

我有一對夫婦對上述解決方案的改進建議。

如果您使用的Excel文件中的「顯示名稱」,也不會包括文件擴展名:

set oldFilename to displayed name of excelFile 

這樣,你將最終獲得「Spreadsheet.xlsx」和「電子表格。 txt「,而不是」Spreadsheet.xlsx.txt「。

而且您不必編寫自己的文本文件,就像打開訪問文檔一樣,因爲TextEdit可以爲您編寫文本文件:

tell application "TextEdit" 
    make new document with properties {text:"The text file contents."} 
    close document 1 saving in file (containerPath & newFilename & ".txt") 
end tell 

這樣你就可以利用TextEdit的複雜性和文本文件。您創建一個UTF-8文本文件,並且不存在打開文件以進行寫入訪問或任何其他低級別磁盤錯誤的風險。

您還可以使用文本編輯打開現有的文件和文本添加到它的結束並再次保存:

tell application "TextEdit" 
    open file (containerPath & newFilename & ".txt") 
    set the text of document 1 to the text of document 1 & return & "Some more text." 
    close document 1 saving yes 
end tell 
相關問題