Руководство по программированию на c#. создание файла или папки

Как изменить расширение для большого количества файлов

Если у вас много файлов, расширение которых нужно изменить, то вы можете воспользоваться командной строкой и тем самым значительно ускорить процесс. Для этого запустите командную строку и перейдите в папку, где находятся нужные вам файлы (для перехода между папками используйте команду cd).

Находясь в нужной папке выполните команду «ren *.txt *.csv». Данная команда изменит расширение с TXT на CSV для всех файлов, которые находятся в этой папке.

Еще раз отметим, что изменение расширения не влияет на содержимое, оно всего лишь указывает операционной системе Windows 11 или Windows 10 какой программой открывать данный документ.

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

Такой трюк мы с вами уже проделывали, когда нужно было переносить IMAP профиль у Outlook. Смысл в том, что создается файл в нужном вам месте, и этот файл это просто ярлык ссылающийся на нужный вам файл или папку, после этого путь сокращается и вы можете удалять или создавать все что вам нужно. Откройте командную строку, далее вам нужно иметь два составляющих:

  • Путь где будет лежать файл символической ссылки — в моем примере C:\короткий путь
  • Длинный путь — C:\Share\WINDOW~1\C73D~1\C6BF~1 \D915~1\5C04~1\B4E5~1\260MIC~1

Нам поможет команда mklink, где ключ /D создает ссылку на каталог

mklink /D «C:\короткий путь» «C:\Share\WINDOW~1\ C73D~1\C6BF~1\D915~1\5C04~1\B4E5~1\260MIC~1»

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

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

Пример нумерации файлов, когда один сериал — в одной папке

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

Допустим, мы создали папку «Незнайка на Луне». И в эту папку нам нужно поместить 12 серий мультфильма «Незнайка на Луне», которые называются следующим образом:

  1. Загадка лунного камня
  2. Грандиозный замысел Знайки
  3. Незнайка и Пончик летят на Луну
  4. Первый день на Луне
  5. Звёздочка
  6. Дорогие друзья
  7. Акционерное общество гигантских растений
  8. Большой Бредлам
  9. Незнайка ищет работу
  10. Куда исчезла ракета
  11. Знайка спешит на помощь
  12. Дорога домой

Если заносить файлы в папку в том порядке, как указано выше, то поначалу они и будут правильно расположены. Но если папку закрыть и потом снова ее открыть, то файлы уже будут расположены в другом порядке, а именно по алфавиту, то есть по первым буквам в названиях файлов (рис. 1):

Рис. 1. Расположение файлов в алфавитном порядке (по первой букве в названии файла)

Нам нужно внутри папки расположить файлы по сериям – с первой по 12-ую. Для этого следует пронумеровать файлы в папке, причем один пробел сразу после числа является обязательным.

Например, название первой серии с пробелом после цифры 1 будет выглядеть таким образом: 1 Загадка лунного камня. Все 12 серий в папке будут следовать строго по порядку, одна за другой (рис. 2):

Рис. 2. Нумерация файлов по порядку следования серий: первая серия, за ней – вторая и так до 12-ой серии.

Далеко не все пользователи так дотошны, чтобы называть файлы точно так, как называются серии мультфильма (рис. 2).

Многие люди предпочитают названия серий «попроще». Например, «1 Незнайка», что означает первую серию мультфильма (рис. 3):

Рис. 3. Нумерация серий Незнайки с 1-ой по 12-ую серию

Вариант нумерации серий, который предложен выше на рис. 3, хорошо подойдет, если в папке находится только один мультфильм.

Psexec в домене

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

PsExec — это утилита командной строки, с возможность вызывать в интерактивном режиме интерфейс командной строки в удаленных системах Windows и удаленно запускать различные команды.

На этом установка PSEXEC можно считать оконченной.

Разберем синтаксис команды:

psexec | @файл]]]] программа

компьютер Указывает программе PsExec, что нужно запустить приложение на заданном компьютере или компьютерах. Если имя компьютера не указано, то программа PsExec запустит приложение в локальной системе, если же вместо имени компьютера задан символ «звездочка» (\*), то программа PsExec запустит приложение на всех компьютерах текущего домена.

@файл Указывает программе PsExec, что нужно запустить приложение на всех компьютерах, перечисленных в заданном текстовом файле.

-a Процессоры, на которых можно запустить приложение, отделяются запятыми, при этом процессоры нумеруются, начиная с 1. Например, чтобы запустить приложение на процессорах втором и четвертом, введите «-a 2,4»

-c Указанная программа копируется в удаленную систему для выполнения. Если этот параметр не задан, то приложение должно находиться в системной папке удаленной системы.

-d Указывает, что не нужно ждать завершения приложения. Этот параметр следует использовать только при запуске неинтерактивных приложений.

-e Указанный профиль учетной записи не загружается.

-f Указанная программа копируется в удаленную систему, даже если такой файл в удаленной системе уже есть.

-i Запускаемая программа получает доступ к рабочему столу указанного сеанса в удаленной системе. Если сеанс не задан, то процесс выполняется в консольном сеансе.

-l При запуске процесса пользователю предоставляются ограниченные права (права группы администраторов отменяются, и пользователю предоставляются только права, назначенные группе «пользователи»). В ОС Windows Vista процесс запускается с низким уровнем благонадежности.

-n Позволяет задать задержку подключения к удаленным компьютерам (в секундах).

-p Позволяет указать необязательный пароль для имени пользователя. Если этот параметр опущен, то будет выдан запрос на ввод пароля, при этом пароль не будет отображаться на экране.

-s Удаленный процесс запускается из системной учетной записи.

-u Позволяет указать необязательное имя пользователя для входа в удаленную систему.

-v Указанный файл копируется в удаленную систему вместо уже имеющегося только при условии, что номер его версии выше или он более новый.

-w Позволяет указать для процесса рабочий каталог (путь внутри удаленной системы).

-x Отображает интерфейс пользователя на рабочем столе Winlogon (только в локальной системе).

-приоритет (приоритет) Позволяет задавать для процесса различные приоритеты: -low (низкий), -belownormal (ниже среднего), -abovenormal (выше среднего), -high (высокий) или -realtime (реального времени).

программа Имя запускаемой программы.

аргументы Передаваемые аргументы (обратите внимание, что пути файлов должны указываться как локальные пути в целевой системе). Примеры работы команды PSEXEC:

Примеры работы команды PSEXEC:

1) Для того чтобы запустить командную строку другого компьютера, необходимо ввестиpsexec \ cmd

например:psexec \WIN782 cmd

после этого можете вводить необходимые вам команды.

2) Для того чтобы запустить какою либо программу (в данном примере test.exe) на удаленном компьютере необходимо выполнить команду, (эта команда копирует программу test.exe в удаленную систему и выполняет ее в интерактивном режиме).

psexec \ -c test.exe

например:psexec \WIN782 -c test.exe

3) Если в удаленной системе такая программа уже установлена и находится не в системном каталоге, укажите полный путь к этой программе

Написать текстовый файл (пример 1)

Следующий код использует класс для открытия, записи и закрытия текстового файла. Аналогично классу, вы можете передать путь текстового файла конструктору, чтобы открыть его автоматически. Метод записывает полную строку текста в текстовый файл.

  1. Запустите Visual Studio.

  2. В меню File указать на New, а затем выбрать Project.

  3. Выберите visual C# проектов в Project типов, а затем выберите консольное приложение в шаблонах.

  4. Добавьте следующий код в начале файла Class1.cs:

  5. Добавьте в метод следующий код:

  6. В меню Отлаговка выберите Пуск для компиляции и запуска приложения. Этот код создает файл, которыйTest.txt на диске C. Open Test.txt в текстовом редакторе, например Блокнот. Test.txt содержит две строки текста:

ISE Steroids

В Windows есть собственный редактор для сценариев Powershell, который называется ISE (Integrated Scripting Environment). Для этого редактора существует расширение с названием ISE Steroids. Расширение добавляет множество функций и одна из функций — это конвертация файлов. Плюсы этого способа от следующих в том, что оно бесплатное, до сих пор поддерживается и является расширением (а не полноценной программой).

Существует несколько способов установки этого расширения. Самый простой из репозитория:

После установки, в самом ISE нужно выполнить следующую команду:

Если при установке могут появиться ошибки. Это ожидаемая ситуация и исправить ее можно скачав пакет с официального сайта ISE Steroids или использовав другие методы описанные там же.

После установки расширения, зайдя в «Сервис», можно увидеть кнопку «Turn Code into EXE…»:

В новом окне настраивается версионность приложения, поведение окна консоли при запуске приложения, устанавливается иконка и привилегии для запуска. При нажатии на кнопку «Create Application» — нужно указать путь для сохранения готового файла:

Для чего служит команда lsof

Относительно
lsof справка man
как раз сообщает, что lsof
есть сокращение от LiSt of Open Files, и что утилита эта служит для
вывода информации о том, какие файлы используются теми или иными
процессами. Причем утилита эта имеется в очень многих версиях и
диалектах UNIX, включая Linux версии 2.1.72 и выше, а также в HP-UX,
AIX, NextStep, Apple Darwin для Power Macintosh, SCO UnixWare,
Solaris, FreeBSD, NetBDS, OpenBSD и так
далее.

Создателем программа lsof является Victor A. Abell,
его домашняя страничка расположена по адресу
, где
вы можете найти исходные коды программы. Их можно также скачать с FTP-сайта
ftp://vic.cc.purdue.edu/pub/tools/unix/lsof.
О том, как скомпилировать и установить программу, вы можете прочитать
в статье .

Если запустить эту утилиту без параметров, выдается информация о всех
работающих процессах и открытых ими файлах. Даже в моей системе с
одним пользователем эта команда выдала 2344 строки текста. Попробуй
проанализируй эту массу информации! Но давайте взглянем хотя бы на
несколько строк ее вывода, чтобы на этом примере понять, какую же
информацию она выдает.

Кстати, если вы будете экспериментировать, имейте в виду, что будучи
запущенной простым пользователем, эта команда выдает информацию
только о процессах, запущенных этим пользователем. Поэтому во многих
случаях вы можете не получить от нее никакого ответа. Если вы хотите
получить вразумительный ответ на любой свой запрос, ее необходимо
запускать от имени root-а (можно воспользоваться следующей формой
запуска sudo lsof). Кроме того, команда
отрабатывает достаточно медленно, так что будьте терпеливы и не
щелкайте раньше времени <Ctrl>+<C> — программа не
зависла, просто идет поиск информации.

А теперь смотрим листинг 1 (или результат работы программы на вашем
экране).

Листинг 1.
Вывод команды lsof.

COMMAND     PID    USER   FD   TYPE     DEVICE     SIZE       NODE NAME
init          1    root  cwd    DIR        3,3     4096          2 /
init          1    root  txt    REG        3,3    27036     161176 /sbin/init
init          1    root  mem    REG        3,3   103044     160493 /lib/ld-2.3.2.so
init          1    root   10u  FIFO        3,3               71954 /dev/initctl
portmap    1528     rpc    3u  IPv4       1656                 UDP *:sunrpc 
xinetd     1649    root    0r   CHR        1,3               65970 /dev/null
rpc.mount  1682    root    5u  unix 0xc34cea80               10311 socket
nmbd       1790    root    6u  IPv4       2456                 UDP *:netbios-ns 
sh        23252     kos    4u   CHR        5,0               70758 /dev/tty
sh        23252     kos    6u   CHR      136,3                   5 /dev/pts/3
sh        23252     kos    8w  FIFO        0,5              840800 pipe
sh        23253     kos  cwd    DIR        3,3     4096     160487 /usr/share/man
sh        23253     kos  rtd    DIR        3,3     4096          2 /
sh        23253     kos  txt    REG        3,3   626028     160664 /bin/bash

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

  • cwd — текущий рабочий каталог;
  • ltx — текст разделяемой библиотеки;
  • mxx — hex memory-mapped type number xx.
  • m86 — DOS Merge mapped file;
  • mem — файл, загруженный в память (memory-mapped file), чаще всего – библиотека,
  • mmap — memory-mapped device;
  • pd — родительский каталог;
  • rtd — корневой каталог;
  • txt – текст программы (код и данные);
  • v86 — VP/ix mapped file.

Номер
файлового дескриптора сопровождается символом, указывающим режим, в
котором файл был открыт:

  • r
    — файл открыт для чтения;
  • w
    – файл открыт для записи;
  • u
    — файл открыт для чтения и для записи;
  • пробел
    – режим доступа неизвестен и файл не блокирован;
  • ‘-’
    — режим доступа неизвестен, но на файл установлена блокировка.

В
последнем случае за дефисом следует еще один символ, определяющий тип
блокировки (подробнее смотри man
lsof).

В
следующем столбце указан тип файла. Чаще других встречаются файлы
одного из следующих типов: REG — обычный файл, DIR — каталог, BLK —
файл блочного устройства, CHR — файл символьного устройства, LINK —
файл символической ссылки, INET – Internet-сокет, UNIX –
доменный сокет UNIX. Но на справочной странице список типов гораздо
обширнее.

Вслед за типом указывается
устройство, на котором расположен файл, размер файла, номер
индексного дескриптора и имя файла.

Стандартные программы Виндовс (Windows), что это такое

Здравствуйте, друзья! Стандартные программы Виндовс – это специальные утилиты, которые необходимы для выполнения команд на компьютере. Эти утилиты позволяют посмотреть фотографии на компьютере, видеоролики, прослушать музыку, открыть фото в программе Пейнт, напечатать текст, зайти в Интернет и так далее.

Наличие таких программ полезно для начинающего пользователя — не нужно устанавливать стандартные программы. Они уже есть в операционной системе Windows. Данные утилиты можно найти через меню «Пуск». Об этом способе поиска программ мы поговорим далее. Найденные программы легко запустите, и используйте их на практике.

Как запустить командный файл в Windows 10

В Windows 10 вы можете запустить командный файл как минимум тремя способами. Вы можете запустить пакет по требованию, используя проводник или командную строку. Вы можете создать запланированное задание с помощью планировщика заданий. Или вы можете поместить скрипт в папку «Автозагрузка», чтобы запускать его каждый раз при входе в устройство.

Запуск пакетного файла по требованию

Если вам нужно запустить скрипт по требованию, вы можете использовать проводник или командную строку.

Проводник

Чтобы запустить пакетный файл с помощью проводника, выполните следующие действия:

  1. Откройте проводник.
  2. Найдите папку со сценарием.
  3. Дважды щелкните командный файл, чтобы запустить его.
  4. (Необязательно) Если вы выполняете команду, требующую прав администратора, вам нужно запустить сценарий от имени администратора, щелкнув правой кнопкой мыши пакетный файл и выбрав опцию Запуск от имени администратора.

После того, как вы выполните шаги, пакет будет выполнять каждую команду в последовательности, отображая результаты в терминале.

Командная строка

Чтобы запустить командный файл из командной строки, выполните следующие действия:

  1. Откройте командную строку от имени администратора.
  2. Введите путь и название командного файла и нажмите Enter:

    Например, следующая команда запускает пакетный файл, расположенный в пользовательской папке «batch» внутри папки «Downloads»:

После того, как вы выполните эти шаги, выходные данные будут отображаться на экране, даже если скрипт содержит команду «PAUSE».

Запуск пакетного файла по расписанию

Чтобы запланировать запуск пакетного файла в Windows 10, вы можете использовать планировщик задач, выполнив следующие действия:

  1. Откройте Пуск.
  2. Введите планировщик заданий и щелкните по верхнему результату, чтобы открыть приложение.
  3. Щелкните правой кнопкой мыши ветку «Библиотека планировщика заданий» и выберите опцию Создать папку….
  4. Введите имя для папки – например, MyScripts.

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

  5. Нажмите кнопку ОК.
  6. Щелкните правой кнопкой мыши папку MyScripts.
  7. Выберите опцию Создать простую задачу.
  8. В поле «Имя» введите краткое описательное имя для задачи – например, SystemInfoBatch.
  9. (Необязательно) В поле «Описание» создайте описание для задачи.
  10. Нажмите кнопку Далее.
  11. Выберите опцию Ежемесячно.

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

  12. Нажмите кнопку Далее.
  13. Используя настройку «Начать», укажите день и время запуска задачи.
  14. Используйте выпадающее меню «Месяцы», чтобы выбрать месяцы года, в которые вы хотите выполнить задачу.
  15. Используйте выпадающее меню «Дни» или «В:», чтобы указать дни, в которые будет выполняться задание.
  16. Нажмите кнопку Далее.
  17. Выберите опцию Запустить программу, чтобы запустить пакетный файл.
  18. В поле «Программа/скрипт» укажите путь к пакетному файлу.
  19. Нажмите кнопку Готово.

После выполнения этих действий задача сохраниться и запустит пакетный файл по указанному вами расписанию.

Запуск пакетных файлов при запуске

В качестве альтернативы, если вы хотите запускать пакетный файл каждый раз, когда вы входите в свое устройство, вместо использования планировщика заданий, вы можете сохранить сценарий в папке «автозагрузка».

Чтобы запустить скрипт при запуске, используйте следующие простые шаги:

  1. Откройте проводник.
  2. Найдите папку с командным файлом.
  3. Щелкните правой кнопкой мыши файл и выберите параметр Копировать.
  4. Используйте комбинацию Win + R, чтобы открыть окно «Выполнить»
  5. Введите следующую команду: shell:startup
  6. Нажмите Вставить на вкладке «Главная» в папке «Автозагрузка». (Или вы можете нажать кнопку «Вставить ярлык», чтобы создать ярлык для командного файла.)
  7. Выйдите из учетной записи Windows 10.
  8. Войдите в аккаунт.

После выполнения этих шагов каждый раз, когда вы входите в учетную запись Windows 10, командный файл будет выполняться и выполнять команды в последовательности.

Мы ориентируем это руководство на Windows 10, но возможность использовать пакетные файлы существует давно, а это означает, что вы можете обратиться к этим инструкциям, если вы всё ещё используете более старую версию, включая Windows 8.1 или Windows 7.

Регистр символов и файловая система Windows

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

создает каталог с именем TeStDiReCtOrY. Если переименовать каталог или файл так, чтобы изменился регистр символов, в имени будет отражен регистр, используемый в момент переименования. Например, следующий код переименовывает файл test.txt в Test.txt:

Тем не менее при сравнении имен каталогов и файлов регистр символов не учитывается. Если выполнить поиск файла с именем «test.txt», API файловой системы .NET будут игнорировать регистр символов при сравнении. Таким образом, при поиске файла «test.txt» будут возвращены совпадения для файлов «Test.txt», «TEST.TXT», «test.TXT», а также любых других их вариантов с различным сочетанием букв в верхнем и нижнем регистре.

Как создать файл?

Любой пользователь системы рано или поздно сталкивается с необходимостью сделать тот или иной файл. Это могут быть как документы блокнота (текстовый), так и какое-то изображение, простейший пример которого – приложение Paint для Windows.

С помощью средств системы (т.е. через контекстное меню)

Для того чтобы создать стандартный текстовый файл txt на компьютере, достаточно выполнить несколько простых шагов:

  1. Нажать правой кнопкой мыши в пустой области на рабочем столе.
  2. В выпавшем списке выберите пункт «Создать», затем укажите необходимый формат.
  3. Введите имя, которое хотите присвоить.

Вот и всё, можно перейти к дальнейшему использованию или изменению.

Использование программ

Тоже самое можно сделать используя внутренние утилиты Windows. Рассмотрим данный метод на примере Блокнота. В остальных утилитах создание происходит аналогичным способом:

  1. Находим необходимое приложение. Можно воспользоваться меню «Пуск» или использовать ярлык на рабочем столе.
  2. Откроется пустое окно.
  3. Следует в левом верхнем углу нажать кнопку «Файл» и в выпавшем меню выбрать «Сохранить как…».
  4. После этого операционная система предложит указать место, куда необходимо произвести сохранение. В этом же окне следует указать имя будущего документа. Также чуть ниже имени в некоторых утилитах существует возможность изменения типа, актуально будет при сохранении из графических приложений, текстовых или графических редакторов.

После этих манипуляций, сохранение окончено, можно переходить в папку, куда его поместили и продолжать использование.

Файловые менеджеры

В интернете довольно популярны приложения, которые призваны упростить работу с данными, их перемещение и структуризацию. Рассмотрим создание файлов в папках на примере Total Commander:

  1. Необходимо открыть Total Commander.
  2. В появившемся окне перейти в нужную директорию (диск, папку).
  3. Нажать в левом верхнем углу кнопку «Файл» и выбрать «Создать» или использовать комбинацию клавиш Shift + F4.
  4. Ввести имя и нажать кнопку «Создать».

Командная строка

Создать новый файл можно и не используя приложения. Используя только командную строку, встроенную в ОС:

  1. Открыть командную строку. «Пуск» — «Командная строка» или комбинация клавиш Win + R и ввести cmd.
  2. Откроется чёрное окно.
  3. Введите команду NUL > и после необходимое название.
  4. Нажмите Enter – готово.

Где найти документ показывает путь вверху окна.

Создание файла без расширения

Самый простой способ создать пустой файл с отсутствующим расширением на компьютере — это проводник:

  1. Нужно открыть проводник и перейти в директорию.
  2. Нажать в пустом месте правой кнопкой мыши и выбрать «Новый».
  3. Ввести имя и сохранить, согласившись с предупреждением.

FileBot (групповое переименование фильмов и сериалов)

У людей, которые любят хранить на компьютере фильмы или телешоу, есть распространенные общие проблемы: некорректные названия файлов, отсутствие файлов с субтитрами, неполная информация. FileBot – это служебное приложение, которое поможет автоматизировать задачу организации и переименования медиафайлов.

FileBot имеет интерфейс в виде двух панелей. Перетащите папку мультимедиа на панель Original Files (Оригинальные файлы). На панели New Names (Новые имена) нажмите кнопку Fetch Data (Получить данные). Приложение попытается автоматически сопоставить ваши файлы с данными из различных онлайн-баз данных. Как только вы подтвердите подобранную информацию, нажмите Rename.

Уникальные особенности:

  • FileBot может сканировать имена файлов, чтобы выяснить, какие шоу, сезоны и эпизоды содержатся в видео. Только от вас зависит, как вы решите назвать медиа-файлы и захотите их упорядочить.
  • Программа позволит вам увидеть полный список всех эпизодов любимого сериала. Просто найдите ваше шоу, выберите источник и порядок сортировки.
  • Приложение также позволяет вручную искать и загружать субтитры, просматривать их и исправлять проблемы кодирования на разных языках.
  • Извлекайте обложки, постеры и создавайте файлы NFO для вашей медиатеки. Если вы используете медиаплеер Kodi, FileBot может исправить различные проблемы, связанные с метаданными.

Скачать FileBot (Платная, $6 за годовую подписку)

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: