Проблема в том, что когда вы закрываете окно, количество окон меняется, и ваш цикл прерывается, потому что в конечном итоге одного из окон, над которым вы начали цикл, больше нет (поскольку вы изменяете переменную цикла в середине петли).
Если вы включите журналы событий и ответов, вы сможете увидеть, что происходит немного яснее.
Вот попытка исправить. Это повторяет столько раз, сколько существует окон. Если окно № 1 не имеет названия, оно закрывается. Если нет, то мы переходим к окну № 2 и далее.
tell application "Safari"
set windowNumber to 1
repeat the number of windows times
if name of window windowNumber starts with "Untitled" then
close window windowNumber
else
set windowNumber to windowNumber + 1
end if
end repeat
end tell
Мой яблочный скрипт действительно ржавый. Я уверен, что есть более простой способ сделать это (то есть некоторый синтаксис close all windows whos name starts with "Untitled"
), но это, кажется, работает.