Я пишу программу, которая постоянно устанавливает фон рабочего стола на обложку альбома текущей песни, воспроизводимой в iTunes, и для этого я записываю обложку в файл со случайным идентификационным номером. Это означает, что рабочий стол каждый раз будет меняться на другой файл.
Конечно, я хочу иметь возможность удалять все эти файлы после того, как они были использованы, поэтому я пытаюсь использовать do shell script "rm ~rf " & folderName
для удаления всей папки, содержащей изображения.
Однако каждый раз, когда я запускаю свой скрипт или даже ввожу полный каталог в Терминал, я получаю сообщение об ошибке:
"rm: ~rf: Нет такого файла или каталога rm: Macintosh: Нет такого файла или каталога rm: HD:Users:BenClose:Desktop:iTunesWallpaper: Нет такого файла или каталога" сильный>
Ниже приведен весь код моей программы, я понятия не имею, что и где происходит, поэтому любая помощь будет очень признательна, так как я хотел бы, чтобы любой, кто хочет, мог использовать эту программу.
screenNum
указывает на то, какой рабочий стол изменяется.
hiddenFile
указывает, будут ли созданные файлы скрыты. "."
, если правда, и ""
, если ложь (точка, добавленная к началу имени файла, сделает его скрытым).
По сути, происходит то, что фон рабочего стола устанавливается на обложку альбома 99 раз, после чего я хотел бы иметь возможность удалить все 99 файлов и позволить процессу начаться снова.
Ошибка возникает в самом конце скрипта, где он пытается удалить папку с изображениями.
set screenNum to 2
set directoryName to "iTunesWallpaper"
set fileExt to "jpg"
set hiddenFile to ""
set repeatTrue to 1
set loopLimit to 99
set looped to 0
set folderName to ((path to desktop) as text) & hiddenFile & directoryName
repeat while repeatTrue is 1
tell application "Finder"
if (exists folderName) is not true then
make new folder at (path to desktop) as text with properties {name:hiddenFile & directoryName}
end if
end tell
set randID to screenNum
set randLoop to 0
repeat while randLoop is not 9
set randNum to (random number from 0 to 9) as text
set randID to randID & randNum
set randLoop to randLoop + 1
end repeat
tell application "System Events"
set fileName to {((path to desktop) as text) & hiddenFile & directoryName & ":" & randID & "." & fileExt}
set changeDesktop to 0
if process "iTunes" exists then
tell application "iTunes"
if (player state is not stopped) then
if exists artworks of current track then
set changeDesktop to 1
-- get the raw bytes of the artwork into a var
tell application "iTunes" to tell artwork 1 of current track
set srcBytes to raw data
end tell
-- write to file
set outFile to open for access file fileName with write permission
-- truncate the file
set eof outFile to 0
-- write the image bytes to the file
write srcBytes to outFile
close access outFile
end if
end if
end tell
if changeDesktop = 1 then
if exists desktop screenNum then
tell desktop screenNum
set picture to fileName
end tell
end if
end if
end if
end tell
set looped to looped + 1
if looped is loopLimit then
do shell script "rm ~rf " & folderName
set looped to 0
end if
end repeat