Как для отладки помощью AppleScript ошибка: "ожидалось“*)”, но нашли конец скрипта."

Я схожу с ума, пытаясь исправить следующую ошибку в моем код AppleScript:

enter image description here

Что означает эта ошибка заключается в том, что я открыл комментарии где-то в коде С (* но я забыл закрыть его *).

Код содержит более 4000 строк и сотни комментариев. Я посмотрел через код в течение нескольких часов пытаются найти это недостающее закрытие, но я не могу найти его.

Есть какой-то способ или приложение, которое может сообщить мне точную строку кода, которая отвечает за ошибку?

+164
alexgieg 16 янв. 2010 г., 10:38:08
24 ответов

Я хотел бы использовать iPhone 4s для Программа BYOP Tracfone. Ли iPhone 4s и должны быть использованы для работы по программе BYOP Tracfone, или я могу использовать новый телефон?

+979
user76129 03 февр. '09 в 4:24

Эта проблема беспокоит меня, так как я пытался добавить оборудование(устройства смарт-карт) для списка поддержки, так что я могу использовать это устройство смарт-карт под мой Macintosh. Но у меня нет разрешения на изменение этого файла список(информация.файл plist) на EI Capitan и 10.11.4 и 10.11.5. Перед 10.11.4, нет это самое разрешение, я не могу понять, почему Apple делает это.

Кто-нибудь знает, как изменить Инфо.файл plist(каталог: "каталог/usr/IP-адресов/SmartCardServices/драйверы/ИФД-данный.пакет/содержание/")?

enter image description here

enter image description here

+939
Omonim 2 авг. 2018 г., 1:32:19

У МЕНЯ ЕСТЬ ОТВЕТ ;)

Удалить приложение YouTube, если он у вас есть.

Откройте приложение Магазин -> загрузить "хром".

Откройте его и перейдите на youtube.com.

Справа вверху есть три точки -> рабочий стол

Если вы играете видео, вы сможете увидеть шестерни в правом нижнем углу плеера!

Благодарить меня позже.

+928
user3554129 25 февр. 2019 г., 15:59:30

Можно ли использовать имак 2009 как дисплей на 2017 Макбук Про? Если да, то какой кабель мне нужен, чтобы сделать эту работу? В идеале с мини-дисплей порт USB-с кабель было бы просто работать, но у меня есть сомнения.

+891
George McGinn 26 окт. 2010 г., 12:09:30

Я заметил, что все мои устройства iOS и мой моих друзей, у вас отключен JavaScript в настройках по умолчанию в Safari (Настройки > Safari > дополнительно). Однако, в JavaScript-видимому, на всех сайтах.

enter image description here

Когда я его включил, сайты продолжали работать как ожидается. Но когда я повернул его обратно от большинства сайтов не работает, потому что JavaScript-это важно для них. На мой вопрос, почему она отключена по умолчанию и до сих пор работает? У меня iOS 11 и есть подобный вопрос с iOS 10 здесь: прошивкой 10 сафари на JavaScript отключен. Это баг или есть какая-то причина для этого?

+852
ankurbansal 17 апр. 2017 г., 10:32:09

Серия часов Apple 4 (с 3 серии) с поддержкой сотовой связи могут позвонить без iPhone, но должны быть в паре с ним. Apple наблюдать сотовой связи поставляется с встроенным в Есима. Он должен быть в паре с SIM-картой в ваш iPhone.

Серия часов Apple 4, как правило, ожидается, чтобы поддерживать все телефонный звонок/сотовая особенности серии 3.

Примечание: наличие iPhone является предпосылкой для использования(любое) Яблоко часы. Таким образом, это не возможно, чтобы использовать Apple наблюдать (любого поколения), без обладания айфоном.

+850
Nick D 27 окт. 2012 г., 7:29:31

Можно использовать такой скрипт:

--Выбрать некоторые файлы в Finder в первую очередь. Затем запустите этот скрипт.

набор oldDelims к тексту рабочей группы по пункту разделители
набор the_strings_to_strip к {"УО", "выстрел", "З", "в"}

сказать приложение "Искатель"
 набор the_files на выбор
--
 повторите с a_file в the_files
 набор the_name на имя a_file
 повторять с I от 1 до количества the_strings_to_strip
 набор текста с помощью AppleScript пункт разделители пункт the_strings_to_strip
 набор the_text_items в текст элементы the_name
 набор текста с помощью AppleScript пункт разделители ""
 набор the_name в the_text_items как строку
 конца повторять
 задайте имя a_file в the_name
 конца повторять
--
 набор текста с помощью AppleScript пункт разделители oldDelims
конец сказать

По идее, у вас есть свой набор символов или фраз, которые нужно зачистить. Затем, вы используете их как "текст пункта разделителей." Обычно текст пункта разделители "". Поэтому, когда у вас есть такое слово как "кошка" единицы текста "с", "А" и "Т". Но, если установить текст, рабочей группы по пункту разделители "а" вместо "" у вас будет только два текстовых элементов в слове "Кошка": "С" и "Т". Затем, когда вы выберите пункт текстовый разделителями назад к "", а затем объединяете элементы текста, ты по сути сделал поиск и замену: заменить строку с "".

Я попробовал это на кучу стрелял файлы и все работало нормально.

Обратите внимание, что в конце, я поставил пункт помощью AppleScript текстовые разделители обратно, какими бы они ни были, когда сценарий начал. Это будет хорошая ставка, что они были "" но на всякий случай, я записываю то, что они были, и восстановить их в конце, если они были/было чем-то иным "". Нет смысла гадать, когда можно знать наверняка.

+819
ajaja 4 нояб. 2013 г., 11:17:22

Сказать, что я начинаю новое письмо, и я решаю отменить его. Если я нажимаю АЛТ+ж, окно подсказывает мне следующие три параметра показано ниже:

enter image description here

Большую часть времени я хочу, чтобы "отменить изменения", но ОС Х не позвольте мне использовать вкладки , чтобы изменить мой выбор.

Я пробовал все комбинации клавиш, но и единственная вещь, которая работает, используя мышь, чтобы нажать на "отменить изменения".

Я хотел бы воспользоваться моей клавиатурой, чтобы подтвердить, что да , я просто хочу отменить мою электронную почту. Любой способ сделать это?

+726
Donald Roach Sr 14 авг. 2017 г., 14:13:12

Я взял кучу фотографий на отпуск и сохранили их в альбом в приложении Фото в iOS 9. Теперь я бы хотел поделиться этим альбомом. Есть ли способ сделать это других, чем создавать новый общий альбом и добавлять отдельные фотографии?

Я посмотрел на инструкции здесь , и они не описывают любой способ поделиться уже созданный альбом. Фотографии резервное копирование в iCloud, и я могу открыть их через iCloud.com но там, кажется, не быть способ, чтобы даже создать новый альбом iCloud.com.

+709
Bradley Uffner 30 окт. 2018 г., 20:47:23

Ваши настройки будут скопированы, если вы позволите помощник по миграции, чтобы скопировать ваши данные из резервной копии Машины Времени (один из вариантов в начале установки).

Машина времени создает резервные копии всего, кроме Mac ОС X и других системных файлов ресурсов. Итак, ваши настройки будут сохранены.

Я тестировал этот переход с 10.6 на 10.6, и я перекочевал с другого Mac напрямую от 10.6 до 10.7. Этот процесс, на практике же.
Итак, ваши настройки будут скопированы из Машины времени резервного копирования для вашей новой системы.

+673
Azar 29 мая 2013 г., 1:22:00

Он просто предотвращает компьютер от перехода на другие видеокарты. Там не должно быть ничего страшного. Хотя, когда я использовал его на моем 2012 году было некоторых редких случаях это не "поймать его" и он в любом случае включен, что, конечно, вызвало замораживание.

+625
DZI 10 февр. 2017 г., 20:10:53

Я не знаю, какое приложение вы используете, но в страницы, самым простым способом является использование вставить и согласовать стиль

В меню Правка

pages Edit menu

вариант-шифт-КМД-в

это сочетание клавиш

Так что при вставке в документ, что не имеет стилей, он будет вставлен в качестве стандартного тела

Copy/paste with style

Разные приложения могут или не могут иметь такую же функциональность. У меня нет MS Word на моей машине, так что понятия не имею, если это то же, что приложения например.

+550
kdbdkad 10 сент. 2013 г., 0:30:54

Довольно простой сортировки - “система” либо сейчас содержит обновление iOS кэширования или много пользовательских данных, но вы можете себя убеждать:

  1. Резервное копирование устройства
  2. Стереть контент и настройки

Измерьте пространство. Если вы чувствуете, это все равно много места, положить устройство в режим восстановления и восстановить его.

Как только вы будете готовы занимаемое место на голой системе, стереть и восстановить из резервной копии на выбор или просто войдите в систему и настроить его новый, если вы хотите начать все заново.

+470
Banna Rajput 5 дек. 2015 г., 9:46:41

Я слышал такой способ, чтобы понизить. Это с китайского форума: https://www.v2ex.com/t/511804.

  • (отключить СИП)
  • изменение/система/библиотеки/CoreServices/SystemVersion.файл plist', чтобы обмануть установщик думаю, что это более ранняя версия
  • Сделать оверлей установки высокого Сьерра
  • Справиться с некоторыми противоречивыми приложений (например, переустановка iTunes)
  • (включить СИП)

Попробовать на свой страх и риск.


Безопасно, вы всегда можете создать резервную копию всей текущей системы и manully перенести личные файлы, приложения и настройки (/библиотека/.., ~/библиотеки/..). Но это колоссальная работа,.

+401
user31055 4 мар. 2015 г., 13:15:08

Я обновил XCode с 7.3.1 для 8.1, а также обновить доморощенного использования [обновление самогон]. после этого я мог бы использовать [самогон обновление]. Это показано следующее предупреждение

Предупреждение: вы используете пре-релиз версии Xcode. Могут возникнуть ошибки при построении или других поломок. Пожалуйста, создайте пулл-реквестов вместо вопросов подачи.

Я использовал [самогон config] и показано следующую информацию

 HOMEBREW_VERSION: 1.0.8-54-g8019afb
 Происхождение: https://github.com/Homebrew/brew.git
 Руководитель: 8019afb60ad321b0f14f60b00c23d7fb098d35c2
 Последний коммит: 6 дней назад
 Основной активный происхождения: https://github.com/Homebrew/homebrew-core
 Основной активный руководитель: 83f73d73fac8229ac523bf839b8a5913de05bf08
 Нажмите ядро последнего коммита: 3 часа назад
 HOMEBREW_PREFIX: /usr/местные
 HOMEBREW_REPOSITORY: /usr/местные/доморощенный
 HOMEBREW_CELLAR: /usr/местные/погреб
 HOMEBREW_BOTTLE_DOMAIN: https://homebrew.bintray.com
 Процессор: четырехъядерный 64-бит процессорами
 Доморощенного Рубин: 2.0.0-p648
 Лязг: 8.0 построить 800
 ГИТ: 2.9.3 => /Применения/Xcode.приложение/содержание/разработчика каталог/usr/Бен/ГИТ
 На Perl: /usr/Бен/Perl с
 Питон: /usr/Бен/Python с
 Руби: /usr/местные/Бен/Рубин => /usr/местные/погреб/Рубин/2.3.1_2/Бен/Рубин
 Ява: 1.8.0_25
 для macOS: 10.11.6-x86_64 с
 В Xcode: 8.1
 ЦПТ: 7.3.1.0.1.1461711523

Я думаю, что последняя строка выше информация [ЦПТ] означает, что инструменты командной строки и его версия 7.3.1..., я думаю, что это должно быть 8.1, потому что Xcode является 8.1. Как я могу обновить CLT из 7.3.1 до 8.1?

+316
Jaythaking 26 апр. 2015 г., 7:20:23

Я знаю, что это не будет только для iOS, но мое предложение было бы использовать группы Google для ее рассылки. Я создал несколько для близких и дальних родственников, и они очень хорошо работают. Отправка по электронной почте всем участникам группы так же просто, как отправить его на адрес @googlegroups.com по электронной почте вы выбираете при настройке группы, и потому он был послан на @googlegroups.com адрес электронной почты адреса электронной почты получателей, естественно, храниться в тайне.

Администрация веб-интерфейс (можно легко сделать на мобильной версии Safari), если она хочет добавить или удалить людей, но преимущество использования Google группами заключается в том, что она может настроить его так, что люди могут добавить или удалить себя в группе, поэтому ей не придется беспокоиться о делает это.

+306
melly 22 дек. 2013 г., 14:29:33

У меня есть PDF-файл открыт в режиме предварительного просмотра, где на одной странице схема должны показать, но это не так. То же самое касается программы "просмотрщик про Лайт" и, наверное, другие чтения PDF. Но если я открываю PDF в Google Chrome или "программа Adobe акробат ридер постоянного тока", то на диаграмме это видно. Кто-нибудь знает почему это не работает для некоторых приложений?

Я запускаю macOS Мохаве 10.14.5, и все приложения в актуальном состоянии.

+266
rjb 13 июл. 2015 г., 15:27:51

Предположим, у меня есть некоторые умеренно чувствительные вещи в моей учетной записи Пользователя на сломанный Mac. Теперь, приведя его в Apple для ремонта. (в macOS 10.12.4 если это имеет значение)

Советы от Apple: enter image description here

ОК, но разве этого достаточно?

В частности, я знаю, что администратор может получить доступ к файлам другого пользователя и Apple требуется доступ администратора к компьютеру. Функция FileVault шифрует весь диск. Если учетная запись администратора, что Apple разблокирует диск не открывает файлы на моем счете?

Удалив все мои файлы выполнимо (я имею полное резервное копирование), но, что хлопот.

+259
C13L0 27 апр. 2016 г., 19:37:36

Это похоже на аппаратный сбой; основан на моем собственном опыте это обернется катастрофическими, и скорее рано, чем поздно. Надеюсь, у вас есть AppleCare, однако:

  • купи себе внешний жесткий диск, и сделать машину времени резервного копирования немедленно.
  • сброс СМЦ и сброс памяти NVRAM - если Вам повезет, это просто какой-то прерывистый / плохом состоянии в одном из этих компонентов и переключать его восстановит свой Mac к полной функциональности.
  • возьмите ваш Mac гению бар и опишите симптомы; надеюсь, что они могут заменить любые дефектные компоненты, но сделать это после того, как вы имеете полное время резервного копирования машина!
+258
user20110 14 февр. 2017 г., 23:38:41

Итак, у меня такая же проблема очень давно и я до сих пор не нашла должного решения.

Однако тут есть одна хитрость, все равно открыть его :

Трюк

+ пространство это, пока в состоянии это слишком.

+200
Julie Weatherby 5 мар. 2015 г., 0:03:41

Я включите параметр "вспышка экрана при возникновении оповещение звука" в разделе Специальные возможности настройки в Системных настройках.

MacOS enabled "Flash screen when an alert sounds"

Она успешно работает со многими приложениями, такими как Microsoft Outlook, но не с отвисшей. Как я могу получить экран мигать когда я получаю слабину уведомления?


Дополнительную информацию:

Похоже, слабину использует родной интерфейс уведомления, как вы можете контролировать тип уведомления в настройках Центра уведомлений:

enter image description here

+186
iurasha 10 февр. 2012 г., 0:29:10

Я Поиск много в ком.яблоко.искатель.файл plist файл (в папке ~/библиотеки/предпочтения), чтобы найти ответ но я не могу. Я думаю, что лучший вариант делать то, что вы хотите создать AppleScript и использовать его в качестве сервиса с помощью Automator.

Я знаю, что это не то, что вы хотите, но это решение, чтобы изменить размер окна для активного окна с ярлыка.

Мы будем использовать помощью AppleScript ниже (подробнее об этом помощью AppleScript здесь)

на бегу
 сказать приложение "Искатель"
активировать
 установить границы переднего стекла для {0, 100, 490, 248}
 конец сказать
конечный результат

Как создать сервис с помощью Automator

  1. Откройте Automator и выберите сервис

    enter image description here

  2. Искать помощью AppleScript и дважды щелкните запустите AppleScript

  3. В Службе получает установлен без ввода в любом приложении

  4. Скопируйте код ниже и вставьте его в Automator enter image description here

  5. Не забудьте сохранить ваши услуги (УМК+ы) enter image description here

Назначить ярлык для вашего сервиса

  1. Перейдите в Системные настройки / Клавиатура / Сочетания клавиш
  2. Из левой боковой панели выберите услуги
  3. Найти свой сервис и добавить ярлык (электронная.х. КМД+шифт+ш) enter image description here

Теперь откройте папку, нажмите клавиши cmd+шифт+ж , И окно границы будет меняться в {0, 100, 490, 248}

Больше информации о BoundsProperty, чтобы создать свой собственный здесь


Обновление:

Вот AppleScript для выбрать свой собственный ширины и высоты окна без изменения назначения со стороны экрана. Просто изменить myWindowWidth и myWindowHeight. Также у меня есть некоторые другие переменные в комментарий, чтобы понимать код. Пожалуйста, ответьте, если вы имеете любой вопрос!

на бегу
 сказать приложение "Искатель"
активировать
 - мы берем свойства границы окна 
 набор windowAreaDimensions до границы окна 
 набор Х1 п. 1 windowAreaDimensions
 набор Y1 в пункт 2 windowAreaDimensions
 набор Х2 с пунктом 3 windowAreaDimensions
 набор У2 пункту 4 windowAreaDimensions

 набор destToLeft Х1
 набор destToTop к У1
 - установить destToRight до х2
 - установить destToBottom в У2
 - установить previousWindowWidth в destToRight - destToLeft
 - установить peviousWindowHeight в destToBottom - destToTop

 набор myWindowWidth до 730
 набор myWindowHeight к 521
 набор sameWidth в destToLeft + myWindowWidth
 набор sameHeight в destToTop + myWindowHeight

 --Следующий скрипт обратку границы окна стойка 
 - получить границы окна стойка 

 --Следующая строка установить наши границы для переднего окна 
 установить границы окна на {destToLeft, destToTop, sameWidth, sameHeight}
 конец сказать
конечный результат
+180
Chi J 11 мая 2017 г., 23:00:28

В лагере помощником будет двигаться файлам (если таковые имеются), которые могут находиться в вашем будущем раздел Windows в нужном положении в то усаживается Mac разделов перед тем как создать нераспределенное дисковое пространство в разбиении процесса. Поэтому нет абсолютно никакой необходимости в дефрагментации в авангарде. Пожалуйста, прочтите делать разделы на SSD карту на физические адреса?

Или с другими словами:

А ССД работает как распределительный центр Амазонка:

Amazon distribution hub

и HD, как Walmart:

Wallmart

Если оба они хотят продавать новый продукт (скажем, окна) Amazon просто должен найти пустые коробки, чтобы сложить все в разных окнах. Контроллер знает, где они находятся. Однако Walmart имеет, чтобы освободить целый раздел, чтобы представить все окна в одном месте ради удобный опыт покупок. ;-)

+116
gus2000 7 июн. 2010 г., 16:46:17

Я пытался в течение 4 дней, чтобы завершить, казалось бы, простое действие преобразования ОС OS X брелок текстовый дамп в правильном формате .CSV с никакого прогресса, значительно меньшим успехом. Я отвечал на другой вопрос о моем затруднительном положении вчера, которая прошла без замечаний или предложений.

Я просто пытаюсь преобразовать .файл txt в формат .CSV-файл, без потери содержания исходного документа в процессе.

Что я уже попробовал:

(1) RWest по сути и Бен-они и christophervalles их вариации. Основным ингредиентом этого сценария является брелок.файл RB и я думаю, что это сработало бы, если бы я только знал, как добавить в поля ввода, чтобы соответствовать все поля в исходном документе. Однако, я не знаю формулу и не смог найти шаблон. Поэтому после выполнения этого скрипта в сотни пропавших без вести записи, потому что входы отсутствия соответствующего выходного поля.

#!/usr/Бен/ОКР рубиновый 
# 
# Использование: 
# дамп-брелок-д безопасности входа.брелок > keychain_logins.txt 
# # Много кнопок 'всегда', или просто 'разрешить', пока это не сделано... 
# завиток -завиток о-о https://raw.github.com/gist/1224792/06fff24412311714ad6534ab700a7d603c0a56c9/keychain.rb
# команду chmod а+х ./брелок.РБ 
# ./брелок.keychain_logins.txt РБ | сортировка > логины.КШМ 
# 
# Затем импортировать логины.CSV в приложение 1Password, используя формат: 
# Название, адрес/местоположение, имя пользователя, пароль 
# Не забудьте проверить поля указаны, и символ разделитель запятой. 
требовать от "дата"

класс KeychainEntry
 attr_accessor :поля

 деф инициализировать(брелок)
 last_key = шь
 @поля = {}
 данные = шь
 совокупный = шь
 линии = брелок.сплит("\Н")
 линии.каждый сделает |линии|
 # Все после заявления 'данные:' это данные.

 если данных != шь
 данные << линия
 elsif операторы агрегатных != шь
 если ( строка[0] == 32 || строка[0] == "" )
 значения = строка.сплит('=', 2).собирать { |кв| кв.полоса }
 совокупный[значения.первая] = значения.последние
еще
 @полях[last_key] = совокупный
 совокупный = шь
конец
конец

 если Aggregate == шь
 части = линия.сплит(':').собирать { |кусок| кусок.полоса }
 если части.длина > 1
 @полях[частей.первая] = частей.последние
еще
 last_key = частей.первый
 данные = [] если части.первый == "данные"
 совокупность = {}
конец
конец
конец
 @полях["данные"] = сведения.присоединиться (" " ), если данные
конец
конец

деф м(строка)
"\"#{строка}\""
конец

деф process_entry(entry_string)
 запись = KeychainEntry.новый(entry_string)


 если запись.поля['класс'] == '"genp"'
 название = запись.поля['атрибутами']['0x00000007 <клякса>'].gsub!('"', ")
 пользователь = запись.поля['атрибутами']['"актс"<клякса>'].gsub!('"', ")
 расположение = запись.поля['атрибутами']['"svce"<клякса>'].gsub!('"', ")
 пропуск = запись.поля['данных'][1..-2]
 ставит "\"#{заголовок}\"\Т\"#{расположение}\"\Т\"#{пользователь}\"\Т\"#{пропуск}\""
конец

 если запись.поля['класс'] == '"инет"' && ['"форма"', '"dflt"'].включить?(запись.поля['атрибутами']['"atyp"<клякса>'])
 сайт = запись.поля['атрибутами']['"srvr"<клякса>'].gsub!('"', ")
 путь = запись.поля['атрибутами']['"путь"<клякса>'].gsub!('"', ")
 прото= запись.поля['атрибутами']['"марка"<тип uint32>'].gsub!('"', ")
 прото.gsub!('ПВТ', с 'https');
 пользователь = запись.поля['атрибутами']['"актс"<клякса>'].gsub!('"', ")
 пользователь # = запись.поля['атрибутами']['0x00000007 <клякса>'].gsub!('"', ")
 date_string = запись.поля['атрибутами']['"mdat по"<команду timedate>'].gsub(/0х[^ ]+[ ]+/, ").gsub!('"', ")
 дата = Датавремя.разобрать(date_string)
 пропуск = запись.поля['данных'][1..-2]
 путь = " если Path == '<нуль>'
 URL-адрес = "#{прото}://#{сайт}#{путь}"

 ставит "#{сайт}\Т#{адрес}\Т#{пользователь}\Т#{пропуск}\Т#{дата}"
 #добавляет "#{пользователь}\Т #{пропуск}\Т #{дата}"
конец
конец

аккум = "
ФГДД.each_line делать |линии|
 если строка =~ /^брелок: /
 если аккум.пуст?
process_entry(аккум)
 аккум = "
конец
конец
 аккум += линия
конец

(2) RMondello по сути, который вроде как работал для меня, хотя там были не все, но я не смог заставить работать на всех опять не объяснимая причина.

установить лог-файл ((путь к рабочему столу) как строка) & "пароли"
набор keychainPath в "/пользователи/папа/рабочий стол/папа.брелок"

-- write_to_file взяты из http://www.macosxautomation.com/applescript/sbrt/sbrt-09.html
на write_to_file(this_data, target_file, append_data)
попробовать
 установить target_file к target_file как строку
 установить open_target_file открыть для доступа к файлам target_file с разрешением на запись
 если append_data ложно, то установить ВФ из open_target_file до 0
 писать this_data на open_target_file начиная с ВФ
 закрыть доступ к open_target_file
 возвращает true
 на ошибки
попробовать
 закрыть доступ к файлам target_file
 постараюсь
 возвращает false
 постараюсь
конец write_to_file

рассказать приложения "использовать брелок сценариев"
 набор keychainItems, чтобы получить каждый элемент брелок брелок keychainPath
 повторите с keychainItem в keychainItems
 установить сервер на сервер в keychainItem
 набор anAccount на счет в keychainItem
 Установить пароль на пароль в keychainItem

 набор csvEntry сервер & "," & anAccount & "," & пароль & "
"

 мой write_to_file(csvEntry, журнала, правда)
 конца повторять
конец сказать

(3) в AgileBits ОС OS X брелок в CSV конвертер, в результате .CSV-файлы с еще более отсутствующие записи чем суть RWest сделал.

# ОС OS X брелок текстовый конвертер экспорта
#
# Авторские права Майк Капелла 2014 ([email protected])

пакет конвертеры::брелок 1.02;

наши @Иса = кя(экспортер);
наши @экспорт = кя(do_init do_import do_export);
наши @EXPORT_OK = кя();

использовать У5.14;
использовать utf8;
использовать строгие;
использование предупреждений;
использование диагностики#;

binmode поток stdout, ":utf8 в";
binmode поток stderr, ":utf8 в";

использование кодирования;
использование утилиты::фто;
использование утилиты::утилиты кя(подробного отладки поруки во множественном myjoin unfold_and_chop print_record);
время применения: местные кя(времяместное);
время использования::шт.;

мой $max_password_length = 50;

мой %card_field_specs = (
 логин => { textname => фдоон, поля => [
 [ 'имя пользователя', 0, в QR/^имя пользователя$/ ],
 [ 'пароль', 0, в QR/^пароль$/ ],
 [ 'URL-адрес', 0, в QR/^URL-адрес$/ ],
]},
 Примечание => { textname => фдоон, поля => [
]},
);

мой (%записи, $itype);

# В следующей таблице дисках преобразования или действия для атрибутов записи или класс или
раздел Data # (все собираются в один хэш). Каждый набор правил оценивается в порядке, как и
# каждое из правил в наборе. Ключ " с " указывает на код ссылки, которые передают данные
значение # для данного типа тестируется. Он может преобразовать значение в месте, или просто проверить его и
# возвращает строку (для вывода отладочной). Когда действие ключа '' имеет значение 'пропустить', запись проводится проверка
# будет отклонена от рассмотрения на экспорт, когда " с " ссылочный код возвращает значение true.
# И в этом случае Реф код, на который указывает 'сообщение' будет работать для получения отладочных данных, используемых в
# указать причину отказа.
#
# Таблица облегчает добавление новых преобразований и неприятие правил, по мере необходимости,
# с помощью эмпирических открытий на основе отзывов пользователей.
мои @правила = (
 Класс => [
 { с => суб { $_[0] !~ /^инет|genp$/ }, действие => 'пропустить', МСГ => суб { отладка "\tskipping не пароль класса: ", $_[0] } },
],
 svce => [
 { с => суб { $_[0] =~ ы/^0х([А-Ж\Д]+)\с+".*"$/пакет "ч*", 1 $/Гэ } },
 { с => суб { $_[0] =~ с/^"(.*)"$/$1/ } },
 { с => суб { $_[0] =~ /^Яблоко постоянное состояние шифрования$/ или 
 $_[0] = ~ /предварительный просмотр подписи ^$/ или
 $_[0] = ~ /сессии^сафари состояния ключа$/ или
 $_[0] =~ /^журнал вызовов пользовательских данных ключ$/}, действие => 'пропустить',
 МСГ => суб { отладка "\Т\tskipping не пароль записывать: $запись{'класса'}: ", $_[0] } },
],
 srvr => [
 { с => суб { $_[0] =~ с/^"(.*)"$/$1/ } },
 { с => суб { $_[0] =~ ы/\.((?:_afpovertcp|_smb)\._tcp, относящийся\.)?местного// } },
],
 путь => [
 { с => суб { $_[0] =~ с/^"(.*)"$/$1/ } },
 { с => суб { $_[0] =~ ы/^<нуль>$// } },
],
 Марка => [
 { с => суб { $_[0] =~ с/ПВТ/и HTTPS/ } },
 { с => суб { $_[0] =~ Ы/^"(и\S+)\с*"$/$1/ } },
],
 актс => [
 { с => суб { $_[0] =~ ы/^0х([А-Ж\Д]+)\с+".*"$/пакет "ч*", 1 $/Гэ } },
 { с => суб { $_[0] =~ с/^"(.*)"$/$1/ } },
],
 mdat по => [
 { с => суб { $_[0] =~ ы/^0х\С+\С+"(выражение\D{4}) выражение(\D{2}) выражение(\D{2}) выражение(\D{2}) выражение(\D{2}) выражение(\D{2})З.+"$/$1-$2-$3 $4:$5:$6/г } },
],
 cdat => [
 { с => суб { $_[0] =~ ы/^0х\С+\С+"(выражение\D{4}) выражение(\D{2}) выражение(\D{2}) выражение(\D{2}) выражение(\D{2}) выражение(\D{2})З.+"$/$1-$2-$3 $4:$5:$6/г } },
],
 # деск должны прийти до сведения так, что защищенную заметку типа можно использовать в качестве условия в данных ниже 
 эскп => [
 { с => суб { $_[0] =~ с/^"(.*)"$/$1/; $itype = 'внимание' если $_[0] EQ в безопасности Примечание'; $_[0] } },
],
 Данные => [
 # защищенные заметки, рано завершает список правил тестирования
 { с => суб { $itype экв 'примечание' и $_[0] =~ ы/^.*<ключ>Примечание<\/ключ>\\012\\011<строка>(.+?)<\/строку>.*$/$1/ }, действие => 'перерыв',
 МСГ => суб { отладка "\Т\tskipping номера-пароль записи: $запись{'класс'}: ", $ввод{'svce'} // $запись{'srvr'} } },

 { с => суб { $_[0] !~ с/^"(.+)"$/$1/ }, действие => 'пропустить',
 МСГ => суб { отладка "\Т\tskipping номера-пароль записи: $запись{'класс'}: ", $ввод{'svce'} // $запись{'srvr'} } },
 { с => суб { $_[0] =~ /^[А-З\Д]{8}-[А-я\д]{4}-[А-З\Д]{4}-[А-я\д]{4}-[А-я\Д]{12}$/ }, действие => 'пропустить',
 МСГ => суб { отладка "\Т\tskipping номера-пароль записи: $запись{'класс'}: ", $ввод{'svce'} // $запись{'srvr'} } },
 { с => суб { длина $_[0] > $max_password_length }, действие => 'пропустить',
 МСГ => суб { отладка "\Т\tskipping записи с невероятно длинный пароль: $запись{'класс'}: ", $ввод{'svce'} // $запись{'srvr'} } },
 { с => суб { присоединиться ", "\trecord: класс = $Запись{'класс'}: ", $ввод{'svce'} // $запись{'srvr'} } }, выход отладки только
],
);

$ДБ::один = 1; # триггеров останова при отладке

суб do_init {
 возвращение {
 'технические характеристики' => \%card_field_specs,
 'imptypes' => фдоон,
 'выбирает' => [ [ М{-M или --изменен # установить дату последнего изменения элемента },
 'модифицированных|м' ],
],
};
}

суб do_import {
 мой ($файл $imptypes) = @_;
 мой (%карт, %dup_check);
 мой $содержание = $_;;

{
 местные $/;
 открываю свою $FН, '<:кодирование(в кодировке utf8)', файл $или залог "не удается открыть файл: $файл\Н$!";
 $содержание = <$FН>;
 закройте $FН;
}

 мой ($Н $обследованных, $пропущен, $дубликатов) = (1, 0, 0, 0);
 мой (npre_explode$, $npost_explode);

KEYCHAIN_ENTRY:
 в то время как ($содержание) {
 если ($содержание =~ ы/\Akeychain: (.*?)\Н+(?=$|^брелок: ")//МС) {
 местные $_ = $1; мой $ориг = $1;
 $itype = 'логин';

$исследовав++;
 отладка "ввод ", $обследованных;

С/\а"(.*?)"\Н^(.+)/$2/мс;
 мой $брелок = $1;
 #отладка 'брелок: ', $брелок;

 з/\класс: "?(.*?)"? ?\Н//МС;
 мой $класс = 1$;

 # атрибутами
с/\Aattributes:\Н(.*?)(?=^сведения:)//МС;
 %записи = карта { clean_attr_name(сплит /=/, $_) } сплит /\н\ы*/, $1 =~ ы/^\ы+//р;

 $запись{'класс'} = $класса;

 данные # 
компания с/\:\н(.+)\з//МС;
 $запись{'данные'} = определена в размере 1 ? $1 : ";

 # выполните правила в наборе правил выше
 # для каждого набора правил для ввода ключа...
Правила:
 для (Мой $Я = 0; $Я < @правил; $я += 2) {
 мой ($ключ, $правил) = ($правила[$я], $Правила символы[$i + 1]);

 отладка " с учетом правила ", ключевой$;
 далее, если не существует $запись${ключ};

 # выполнять правила записи ключа...
 мой $rulenum = 1;
 для правило (@$набор правил) {
 отладка "\Т правило $rulenum: называется с ", unfold_and_chop $запись${ключ};

 мой $рэт = ($правило->{'с'})->($запись${ключ});

 отладка "\Т правило $rulenum: возврат ", $рет || 0, ' ', unfold_and_chop $запись${ключ};

 если (существует $правило->{'действие'}) {
 если ($рет) {
 если ($правило->{'действие'} экв 'пропустить') {
$пропущен++;
 ($правило->{'сообщение'})->($запись${ключ}), если существует $правило->{'сообщение'};
 следующий KEYCHAIN_ENTRY;
}
 elsif операторы ($правило->{'действие'} экв 'перерыв') {
 отладка "\Т вырваться из цепочки правил";
 следующее правило;
}
}
}

$rulenum++;
}
}

 для (ключей%) {
 отладка команду "\Т %-12сек : на %S", $_, $запись {$_}, если существует $запись{$_};
}

 #мой $itype = find_card_type(\%записи);

 мой %ч;
 мой (облигации на $$card_modified);
 если ($itype экв 'логин') {
 $ч{'пароль'} = $запись{'данные'};
 $ч{'имя пользователя'} = $запись{'счет'}, если существует $запись{'счет'};
 $ч{'URL-адрес'} = $запись{'Марка'} . '://' . $запись{'srvr'} . $запись{'путь'}, если существует $запись{'srvr'};
}
 elsif операторы ($itype экв 'Примечание') {
 # преобразовать строку данных в формате ASCII, который содержит \### восьмеричные Escape, в UTF-8
 мой $октетов = кодировать("формате ASCII", $ввод{'данные'});
 $октетов = ~ \с/\(выражение\D{3})/"с QQ|\\1$|"/ЭЭГ;
 Примечания $ = расшифровать("УТФ-8", $октетов);
}
 еще {
 умереть "неожиданные itype: $itype";
}

 # будут добавлены к заметкам
 $ч{'протокол'} = $запись{'марка'}, если существует $запись{'Марка'} и $запись{'Марка'} =~ /^АФП|СМБ$/;
 $ч{'создан'} = $запись{'cdat'}, если существует $запись{'cdat'};
 если (существует $запись{'mdat по'}) {
 если ($главная::ОПЦ{'модифицированных'}) {
 $card_modified = date2epoch($запись{'mdat по'});
}
 еще {
 $ч{'модифицированных'} = $запись{'mdat по'};
}
}

 для (ключи и %H) {
 отладка команду "\Т %-12сек : на %S", $_, $ч {$_}, если существует $ч{$_};
}

 # не установить/использовать $СВ до $запись{"svce'} удаляется из _afp*, _smb*, и .местных, т. к. поражений ДУП обнаружения
 мой $Св = $запись{'svce'} // $запись{'srvr'};

 мой $ы = присоединяйтесь к ':::', 'Св', $Св
 карта { существует $ч.{$_} ? "$_ => $ч{$_}" : 'URL-адрес => нет' } кя/URL-адрес имя пользователя пароль/;

 если (существует $dup_check {с}) {
 отладка " *пропуск дубликат ", $Св;
$дубликаты++;
далее
}
$dup_check з {$}++;


 # Из входного карту, поместите ее в конвертере-нормальный формат.
 # Входной платы будет соответствовать полей убрали, оставив только несопоставленные ввод для последующей обработки.
 мой $нормализуется = normalize_card_data($itype, \%ч, 
 { название => $Св
 теги => фдоон,
 Примечания => $Примечания
 папка => фдоон,
 изменен => $card_modified });

 Список возвращает # 1 или более карт/тип хэшей; один вход карты может взорваться на несколько выходных карт
 мой $cardlist = explode_normalized($itype, $нормализуются);

 мои @к = ключи %$cardlist;
 если (@к > 1) {
 $npre_explode++; $npost_explode += @к;
 отладка "\tcard типа $itype раскладывается в ", скалярное @к "картам типа @к"
}
 Для (@к) {
print_record($cardlist->{$_});
 пуш @{$карт{$_}}, $cardlist->{$_};
}
$Н++;
}
 еще {
 залог "брелок разобрать не удалось, после ввода $обследованных; неожиданным: ", функцию substr $содержание, 0, 2000;
}
}

$Н -;
 подробно "изучила $изучили записи", во множественном (осматривали$);
 многословный "пропущены $пропущенные номера-вход записи", во множественном($пропущен);
 многословный "пропущены $дублирует повторяющиеся записи", во множественном($дубликатов);

 многословный "импортных N $запись", во множественном($Н) ,
 npre_explode$? "($npre_explode карта" . во множественном (npre_explode$)". расширена карты $npost_explode)" : "";
 возвращение \%карт;
}

суб do_export {
create_pif_file(@_);
}

суб find_card_type {
 мой $ЭрЭф = сдвиг;

 мой $тип = (существует $ЭрЭф->{'деск'} и $ЭрЭф->{'деск'} экв 'защищенную заметку') ? 'Примечание' : 'логин';
 отладка "\Т\ttype значение переменной '$Type'";
 возврат $тип;
}

# Размещает данные карты в единой внутренней формы.
#
# Основные данные карта передается как $norm_cards хэш-Реф:
# название
# заметки
# теги
папка # 
# изменен
# ТВ-поле данных хэш {
# инкей => импортированный имя поля 
# значение => значение поля после обработки обратного вызова
# valueorig => исходное значение поля
# outkey => экспортировать имя поля 
# тип вывода вывод => поля (могут отличаться от тип выхода карты)
# Сохранить => Сохранить инкей:valueorig пары могут быть помещены в примечаниях
# to_title => добавить название со значением от narmalized карта
# }
суб normalize_card_data {
 мой ($типа $carddata, $norm_cards) = @_;

 для моего $дефа (@{$card_field_specs{$тип}{'поля'}}) {
 мой $ч = {};
 для my $key (ключи %$carddata) {
 если ($ключ =~ /$деф->[2]/) {
 далее, если не определено $carddata->${ключ} или $carddata->${ключ} экв ";
 мой ($инкей, $значение) = ($ключ, $carddata->{$ключ});
 мой $origvalue = $значение;

 если (существует $деф->[3] и существует $деф->[3]{'Функ'}) {
 # обратного вызова(значение, outkey)
 мой $рэт = ($деф->[3]{'Функ'})->($значение, $деф->[0]);
 $значение = $ret если определена в размере рэт;
}
 $ч->{'инкей'} = $инкей;
 $ч->{'значение'} = $значение;
 $ч->{'valueorig'} = $origvalue;
 $ч->{'outkey'} = $деф->[0];
 $х->{'вывод'} = $деф->[3]{'type_out'} || $card_field_specs{$тип}{'type_out'} || $тип; 
 $х->{'сохранить'} = $деф->[3]{'держать'} // 0;
 $ч->{'to_title'} = ' - ' . $х->{$деф->[3]{'to_title'}} если $деф->[3]{'to_title'};
 пуш @{$norm_cards->{'поля'}}, $ч;
 удалить $carddata->{$ключ};
}
}
}

 остальные ключи # карта Примечания
 $norm_cards->{'ноты'} .= "\П", если определена в размере norm_cards->{'примечания'} и длины $norm_cards->{'Примечания'} > 0 и ключи %$carddata;
 для my $key (ключи %$carddata) {
 $norm_cards->{'ноты'} .= "\П", если определена в размере norm_cards->{'примечания'} и длины $norm_cards->{'Примечания'} > 0;
 $norm_cards->{'ноты'} .= присоединяйтесь к ': ', $ключ, $carddata->{$ключ};
}

 возврат $norm_cards;
}

# сортировать Логинов в качестве последнего для проверки
суб by_test_order {
 возвращает 1, Если $a экв 'логин';
 возвратитесь-1, если вход $б экв'';
 $ЧМЗ $б;
}

суб clean_attr_name {
 вернуться ($_[0] =~ /"?([^<"]+)"?<\Вт+>$/, $_[1]);
}

# Дата конвертеры
# Поле LastModificationTime: гггг-ММ-ДД чч:мм:СС
суб parse_date_string {
 местные $_ = $_[0];
 мои$, когда = $_[1] || 0; # -1 = последние только, 0 = полагаю, в этом столетии, 1 = будущее только, 2 = 50-летнее скользящее окно

 если (мой $t = время::заготовки->strptime($_, "%г-%м-%д %ч:%м:%ы")) {
 возврат $Т;
}

 возвращение фдоон;
}

суб date2epoch {
 мой $Т = parse_date_string @_;
 возвращение определенными $т->год ? 0 + времяместное($т->с, $т->минуты, $т->час, $Т->mday, $Т->ПН - 1, $т->год): $_[0];
}

1;

(4) файл швейцарский нож казался перспективным, так как он имеет встроенную команду, чтобы конвертировать через вкладку текст, разделенный запятыми текст. Однако, выполнив команду вылилось в десятки и десятки и десятки ошибок неверный формат'. Я предполагаю, что моя .txt файл должен быть .файл TSV для команды на самом деле работает и я не смог найти какой-либо способ, чтобы преобразовать .тхт на .ТСВ.

Так вот где я сейчас, несколько дней спустя, в том же месте я начал. Может кто-нибудь, пожалуйста, подскажите, как изменить поля ввода первого сценария RWest, так что весь контент будет проходить на .CSV или предложить альтернативный метод, сценарий, приложение, танец дождя и т. д. что позволит мне просто все данные в текстовом файле, отображаются в CSV-файл, с правильным столбцов и строк разделение каждой записи?

Редактировать: это то, что вы получаете, когда вы просто измените расширение файла: enter image description here

+63
elkelk 27 авг. 2014 г., 9:20:48

Показать вопросы с тегом