Редактирование текстового файла в командной строке windows

On Unix I'd just use vi, but I don't know what the command is on Windows. I am actually trying to edit files over SSH with Windows Server 2008.

2021 UPDATE

As @phuclv has mentioned in comments, I want to emphasize that there is a tool that actually works great on Windows 64 bit too! It’s called Micro and fortunately, it is quite feature-rich, regularly updated and alive.

To install it, you only need to download the latest version’s 64bit.zip file from here, and then unzip it somewhere and add its path to your PATH. No dependencies or external files are needed — just the binary and you’re done.

enter image description here

Quick Start:

  • Just type micro to create and edit a new text file.
  • Type micro <filename> to start editing an already-made file.
  • To save: ctrl + s
  • To see a list of keybindings: alt + g
  • To quit: ctrl + q

Some Exciting Features:

  • Select text easily (using the shift key, or even using your mouse!), and then copy, cut, paste or delete the selected text using the same keybindings common in your operating system(e.g. ctrl + c for copy on Windows).
  • Supporting so many common keybindings, e.g. ctrl + d to duplicate a line, or activate multiple curser mode and etc.
  • Undo / Redo
  • Syntax Highlighting (for more than 130 programming languages)
  • Plugin System
  • Typed Commands (instead of using keybindings)

A tip on using Micro for VSCode users:

Since both VSCode and Micro try to support all common keybindings, you’ll probably have a lot of conflicting keybindings between them when using Micro inside the VSCode’s embedded CMD/PowerShell terminal. For instance, to quit Micro, you will have to use ctrl + q while it is the VSCode’s keybinding for the «Quick Open View» command.

But no worries! Micro also supports «Typed Commands» which allow you to control the editor using commands instead of keybindings. So you can type commands and you’re fine to use Micro on VSCode as well. However, there’s still a tiny problem. To enable «command mode» on Micro, you have to use ctrl + e, which is also a keybinding of VSCode for the «Go To File…» command. So you have to change the ctrl + e keybinding either on VSCode or on Micro to get rid of this conflict and then you’re all set.

Personally, I preferred to change Micro’s ctrl + e. Here are the steps from the documentation to change it to ctrl + w (or whatever else non-conflicting keybinding of your own liking) on a Windows machine:

  1. Open %userprofile%/.config/micro/bindings.json with any editor.
  2. Add this line to the end of the JSON: "Ctrl-w": "CommandMode"
  3. Save.
    Now to enter command mode, press ctrl + w and type your commands (e.g.: quit, save, open, etc).

Содержание

  1. Полезные команды в консоли Windows
  2. Содержимое текущей папки — dir
  3. Открыть файл
  4. Перейти в другую папку — cd
  5. Создать папку — mkdir или md
  6. Удалить папку — rmdir или rd
  7. Показать дерево папок — tree
  8. Удаление файла — del или erase
  9. Переименование файла — ren или rename
  10. Команды одной строкой
  11. Справка по командам — help
  12. Как редактировать текстовые файлы в командной строке Windows?
  13. Изучите командную строку в терминале
  14. Создание файлов
  15. 13 инструментов для обработки текста в командной оболочке
  16. Содержание
  17. Обработка текста в командной оболочке
  18. paste
  19. Замена текста
  20. Реальные примеры
  21. Фильтрация CSV с помощью grep и awk
  22. Вывод адреса IPv4, связанного с сетевым интерфейсом
  23. Извлечение значения из файла конфигурации
  24. Извлечение IP-адресов из файла журнала
  25. Переименование функции в исходном файле
  26. Углубляемся: циклы for и xargs
  27. Резюме
  28. Что дальше
  29. Цикл довузовской подготовки кафедры ЭФУ
  30. СТРУКТУРА ПРАКТИКУМА
  31. ЗАДАНИЕ №1
  32. ЗАДАНИЕ №2
  33. ЗАДАНИЕ №3
  34. ЗАДАНИЕ №4
  35. ЗАДАНИЕ №5
  36. ВВЕДЕНИЕ
  37. 1. ОСНОВЫ КОМАНДНОЙ СТРОКИ MS WINDOWS
  38. 1. Начало работы с командной строкой
  39. 2. Структура файловой системы Windows
  40. 3. Работа с текстовыми файлами в Cmd.exe
  41. 4. Копирование и перемещение файлов и директорий
  42. 2. ЭФФЕКТИВНАЯ РАБОТА С КОМАНДНОЙ СТРОКОЙ
  43. 1. Полезные инструменты командной строки
  44. 2. Настройка параметров командной оболочки
  45. 3. Перенаправление ввода/вывода и конвейеры
  46. 3.ЧТО ДОЛЖЕН ЗНАТЬ НЕ ТОЛЬКО СИСАДМИН
  47. 1. Начало работы и внешний вид FAR
  48. 2. Основные операции FAR Manager
  49. 3. Дополнительные возможности FAR
  50. 1.3. Работа с текстовыми файлами в Cmd.exe
  51. Пуск > Все программы > Стандартные > Блокнот
  52. Start > All Programs > Accessories > Notepad
  53. Пример 1.18. Вывод текстового файла на экран
  54. Пример 1.19. Вывод текстового файла на экран
  55. TYPE [диск:][путь]имя_файла
  56. MORE /E [/C] [/P] [/S] [/Tn] [+n] [файлы]
  57. Пример 1.20. Удаление файла (не обязательно текстового)
  58. DEL [/P] [/F] [/S] [/Q] [/A[[:]атрибуты]] имена
  59. ERASE [/P] [/F] [/S] [/Q] [/A[[:]атрибуты]] имена
  60. Список команд Windows ( Windows CMD ) с описанием и примерами.
  61. Способы запуска командной строки
  62. Справочник по командам CMD Windows
  63. Прочие материалы по работе с командной строкой Windows:

Полезные команды в консоли Windows

20190919 c427188a 60

Программистам часто приходится работать в консоли — например, чтобы запустить тестирование проекта, закоммитить новый код на Github или отредактировать документ в vim. Всё это происходит так часто, что все основные действия с файлами становится быстрее и привычнее выполнять в консоли. Рассказываем и показываем основные команды, которые помогут ускорить работу в терминале под ОС Windows.

Для начала нужно установить терминал или запустить командную строку, встроенную в Windows — для этого нажмите Win+R и введите cmd. Терминал часто встречается и прямо в редакторах кода, например, в Visual Studio Code.

Содержимое текущей папки — dir

Выводит список файлов и папок в текущей папке.

Открыть файл

Чтобы открыть файл в текущей папке, введите его полное имя с расширением. Например, blog.txt или setup.exe.

Перейти в другую папку — cd

Команда cd без аргументов выводит название текущей папки.

Перейти в папку внутри текущего каталога

Перейти на одну папку вверх

Перейти в папку на другом диске

Чтобы просто изменить диск, введите c: или d:

Создать папку — mkdir или md

Создаём пустую папку code внутри папки html :

Создаём несколько пустых вложенных папок — для этого записываем их через косую черту.

Удалить папку — rmdir или rd

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

Показать дерево папок — tree

Если вы хотите посмотреть содержимое всего диска, введите tree в корне нужного диска. Получится красивая анимация, а если файлов много, то ещё и немного медитативная.

Удаление файла — del или erase

Команда для удаления одного или нескольких файлов.

Переименование файла — ren или rename

Последовательно вводим ren, старое и новое имя файла.

Команды одной строкой

Очистить консоль — cls

Информация о системе — systeminfo

Информация о сетевых настройках — ipconfig

Список запущенных процессов — tasklist

Справка по командам — help

Команда help без аргументов выводит список всех возможных команд. help вместе с именем команды выведет справку по этой команде.

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

Консоль — важный инструмент веб-разработчика

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

Источник

Как редактировать текстовые файлы в командной строке Windows?

В Unix я бы просто использовал vi, но я не знаю, что это за команда в Windows. На самом деле я пытаюсь редактировать файлы через SSH с помощью Windows Server 2008.

Я не ручаюсь за его функциональность и устаревший графический интерфейс, но он установлен по умолчанию даже в Windows 7.

Изменить: За исключением 64-битных версий Windows.

Самое простое решение для всех версий Windows:

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

Самое простое решение для всех версий в Windows:

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

В командной строке Windows введите copy con , за которым следует имя целевого файла. ( copy con c: file.txt ).

Затем введите текст, который вы хотите поместить в файл.

В командной строке Windows введите copy con , а затем имя целевого файла. ( copy con c: file.txt ).

Затем введите текст, который вы хотите поместить в файл.

Верьте или нет, EDLIN.EXE все еще около по крайней мере в этой системе Vista.

Простите, я тихонько рыдаю про себя …

lazy placeholder

Хотите верьте, хотите нет, но EDLIN.EXE все еще находится рядом с по крайней мере в этой системе Vista.

Простите, я тихонько рыдаю про себя …

Кроме того, Nano иногда добавляет дополнительные символы новой строки при сохранении файлов. Кажется, это какая-то ошибка с переносом слов в Nano.

Я также видел порты vi для Windows, хотя я использовал тот, который, похоже, делает окно командной строки таким маленьким, как это может быть, оставив только строку заголовка (что означает, что остальная часть окна также может быть невидимой, поскольку вы не можете видеть, что делаете). Однако версия Vim для Windows, похоже, работает довольно хорошо.

Кроме того, Nano иногда добавляет дополнительные символы новой строки при сохранении файлов. Кажется, это какая-то ошибка с переносом слов в Nano.

Я также видел порты vi для Windows, хотя я использовал тот, который, похоже, делает окно командной строки таким маленьким, как это может быть, оставив только строку заголовка (что означает, что остальная часть окна также может быть невидимой, поскольку вы не можете видеть, что делаете). Однако версия Vim для Windows, похоже, работает довольно хорошо.

Если у вас установлен git для Windows, то, скорее всего, и nano, и vim доступны по адресу

Для запуска из командной строки (cmd.exe)

Для запуска в PowerShell

Они оба отлично работают даже по ssh.

lazy placeholder

Если у вас установлен git для Windows, то, скорее всего, nano и vim доступны по адресу

Для запуска из команды подсказка (cmd.exe)

Для запуска в PowerShell

Оба они отлично работают даже по ssh.

В Win10 просто включите подсистему linux, тогда у вас будет большая часть вещей Linux, таких как vim и nano :

lazy placeholder

В Win10 просто включите подсистему linux, тогда у вас будет большая часть Linux такие вещи, как vim и nano :

lazy placeholder

(Также может быть доступна версия Scoop, но я не проверял.)

(Также может быть доступна версия Scoop, но я не проверял.)

Изучите командную строку в терминале

Создание папок — это круто, но папка без содержимого так же полезна, как и пустая коробка!

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

Создание файлов

Как вы понимаете, разные Для курсов потребуются файлы разных типов внутри. Например, на уроке гуманитарных наук, таком как история искусства, может потребоваться конец курсовой работы. Скорее всего, это текстовый файл. 🎨 Может быть, на уроке биологии потребуются исследования и результаты этого семестра! Скорее всего, это электронная таблица. 🐢

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

Это намного быстрее, чем создание файла по отдельности через различные приложения, такие как Microsoft Excel или текстовый редактор, и запустив «Сохранить как».

Touch — команда звучит довольно жутко, но вот что она делает:

указывает вашей системе искать определенный файл

Если файл еще не существует, ваша система создаст этот файл для вас.

команда будет выглядеть так:

Это так просто! Теперь, если вы снова посмотрите в Finder, вы увидите, что этот файл был создан внутри вашей папки «История искусства». В настоящее время он пуст, но вы можете открыть его в любое время из Терминала, чтобы редактировать содержимое, как обычно:

Теперь пора создать второй файл. Этот второй файл будет в папке «Биология». Это означает, что мы должны сменить каталоги на папку Biology!

На этом этапе вы вернетесь в каталог «Второй семестр».

Вот как выглядит вся серия команд:

lazy placeholderЗапустите команду open, чтобы открыть файл

Обратите внимание, что после запуска open research-sizes.csv файл открывается автоматически в Microsoft Excel. Терминал достаточно умен, чтобы знать, какое приложение должно открывать файлы какого типа. 👍

lazy placeholderФайл открывается в правильном приложении автоматически!

Пример кода

В предыдущей главе вы видели, как создать базовую структуру папок для статического веб-сайта. Была папка CSS и папка для изображений.

Однако обе они пусты. Давайте добавим файл!

Выполните коснитесь плюс имя файла — index.html — для его создания:

lazy placeholderСоздание файла index.html

Я даже могу открыть HTML-файл в моем браузере, чтобы просмотреть содержимое моего файла:

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

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

В следующей главе вы увидите, как перемещать и копировать часть этого контента вы создали.

Источник

13 инструментов для обработки текста в командной оболочке

Содержание

Обработка текста в командной оболочке

Одна из причин, которые делают командную оболочку бесценным инструментом, — это большое количество команд обработки текста и возможность легко объединять их в конвейер, создавая сложные шаблоны обработки. Эти команды делают тривиальными многие задачи по анализу текста и данных, преобразованию данных между разными форматами, по фильтрации строк и т. д.

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

Заставьте каждую программу хорошо выполнять одну функцию — «Основы философии Unix»

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

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

Файл CSV с примерами доступен в онлайне. Можете скачать его для проверки материала.

Команда cat используется для составления списка из одного или нескольких файлов и отображения их содержимого на экране.

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

По умолчанию отображается всё вышеперечисленное.

Например, можем найти все вхождения слова mutex в файле.

Рассмотрим некоторые опции grep и их поведение.

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

paste

paste объединяет вместе два разных файла в один многоколоночный файл.

uniq обнаруживает и отфильтровывает соседние одинаковые строки в указанном файле или входном потоке.

Поскольку uniq отфильтровывает только соседние строки, в наших данных могут ещё остаться дубликаты. Чтобы отфильтровать все одинаковые строки из файла, нужно сначала отсортировать его содержимое.

Примечание. uniq особенно полезен в сочетании с сортировкой, поскольку конвейер | sort | uniq позволяет удалить все дублирующиеся строки в файле или потоке.

awk — это чуть больше, чем просто инструмент обработки текста: на самом деле у него целый язык программирования. В чём awk действительно хорош — так это в разбиении файлов на столбцы, и делает это с особенным блеском, когда в файлах перемешаны пробелы и табы.

Как видим, столбцы разделены либо пробелами, либо табуляциями, и не всегда одинаковым количеством пробелов. cut здесь бесполезен, потому что работает только с одним символом-разделителем. Но awk легко разберётся с таким файлом.

Хотя awk способен на гораздо большее, выдача колонок составляет, наверное, 99% вариантов использования в моём личном случае.

tr расшифровывается как translate. Эта команда заменяет одни символы на другие. Она работает либо с символами, либо с классами символов, такими как строчные, печатные, пробелы, буквенно-цифровые и т. д.

[:space:] представляет все типы пробелов, от простого пробела до табуляции или символа новой строки.

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

[:lower:] представляет все строчные символы, а [:upper:] — все прописные. Таким образом, преобразование между ними становится тривиальным.

Команды редактора могут включать один или несколько адресов, функцию и параметры. Таким образом, команды выглядят следующим образом:

Хотя sed выполняет множество функций, мы рассмотрим только замену текста как один из самых распространённых вариантов использования.

Замена текста

Команда замены sed выглядит следующим образом:

Пример: замена первого экземпляра слова в каждой строке в файле:

Адрес говорит редактору, в какой строке или диапазоне строк выполнять подстановку.

Реальные примеры

Фильтрация CSV с помощью grep и awk

Вывод адреса IPv4, связанного с сетевым интерфейсом

Команда ifconfig выводит сведения по указанному сетевому интерфейсу. Например:

Извлечение значения из файла конфигурации

Извлечение IP-адресов из файла журнала

Следующий реальный код ищет в журнале БД сообщение Too many connections from (за ним следует IP-адрес) и отображает десять главных нарушителей.

Давайте разберем, что делает этот конвейер. Во-первых, как выглядит строка в журнале.

Команда sed ‘s@/@@’ удаляет начальный слэш.

Переименование функции в исходном файле

Углубляемся: циклы for и xargs

Затем можем использовать команду xargs для осуществления действий с каждой строки выходных данных (то есть всех файлов, содержащих строку bool_from_str ).

Затем выполняются следующие команды:

Эта команда затем исполнит

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

Эта команда выполнит

Резюме

Любую задачу, включающую текст, можно свести к конвейеру более мелких задач, каждая из которых выполняет простое действие и передаёт свои выходные данные в следующую задачу.

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

Примеры в этой статье были надуманными, но я предлагаю вам прочитать удивительную статью «Инструменты командной строки могут быть в 235 раз быстрее, чем ваш кластер Hadoop», чтобы получить представление о том, насколько полезны и мощны эти команды на самом деле и какие реальные проблемы они могут решить.

Что дальше

Если интересно поучаствовать в проекте, подписывайтесь на список рассылки!

Источник

Цикл довузовской подготовки кафедры ЭФУ

СТРУКТУРА ПРАКТИКУМА

ЗАДАНИЕ №1

ЗАДАНИЕ №2

ЗАДАНИЕ №3

ЗАДАНИЕ №4

ЗАДАНИЕ №5

ВВЕДЕНИЕ

1. ОСНОВЫ КОМАНДНОЙ СТРОКИ MS WINDOWS

1. Начало работы с командной строкой

2. Структура файловой системы Windows

3. Работа с текстовыми файлами в Cmd.exe

4. Копирование и перемещение файлов и директорий

2. ЭФФЕКТИВНАЯ РАБОТА С КОМАНДНОЙ СТРОКОЙ

1. Полезные инструменты командной строки

2. Настройка параметров командной оболочки

3. Перенаправление ввода/вывода и конвейеры

3.ЧТО ДОЛЖЕН ЗНАТЬ НЕ ТОЛЬКО СИСАДМИН

1. Начало работы и внешний вид FAR

2. Основные операции FAR Manager

3. Дополнительные возможности FAR

1.3. Работа с текстовыми файлами в Cmd.exe

После построения дерева каталогов (Рис. 1.5) перейдем к рассмотрению способов создания и редактирования простых текстовых файлов (Таблица 1.2).

Для пользователей Windows самым очевидным инструментом такой работы является приложение «Блокнот» (Notepad), запускаемое в русском варианте графического интерфейса Windows как:

Пуск > Все программы > Стандартные > Блокнот

или в англоязычном интерфейсе:

Start > All Programs > Accessories > Notepad

Для корректного отображения текста фалов, созданных в текстовом редакторе Notepad, необходимо установить для командной строки кодовую страницу 1251 (Для каждого национального алфавита используется своя, так называемая, кодовая страница. необходимая для корректного отображения национальных шрифтов) и выбрать для отображения текста один из True Type шрифтов: Consolas или Lucida Console (выбор шрифтов подробно рассмотрен в следующем параграфе – § 2.2 «Настройка параметров командной строки»). Для просмотра текущей кодовой страницы, в данный момент используемой командным интерпретатором и для ее изменения, служит команда CHCP (Пример 2.4).

Приложение «Блокнот» может быть запущено и из командной строки (Пример 1.18). В данном примере создается текстовый файл papa1.txt (Рис. 1.5) с использованием абсолютного пути, включающего имя директории и имя файла.

Пример 1.18. Вывод текстового файла на экран

После подтверждения запроса на создание файла и набора соответствующего текста (Рис. 1.6), необходимо сохранить и закрыть файла (Файл > Сохранить), после чего убедиться в существовании файла командами DIR или TREE.

Рис. 1.6. Текстовый файл в редакторе Notepad.

Для просмотра существующих текстовых файлов из командной строки применяются команды TYPE или MORE (Пример 1.19).

Пример 1.19. Вывод текстового файла на экран

При просмотре текстовых файлов, можно использовать абсолютные и относительные пути к ним из текущей директории. Если с помощью команды CD сделать текущей директорию, в которой находится просматриваемый файл, то команде TYPE или MORE достаточно указать в качестве параметра только имя файла.

Команда TYPE осуществляет вывод содержимого одного или нескольких текстовых файлов в формате:

TYPE [диск:][путь]имя_файла

Команда MORE выводит данные текстового файла по частям, размером в один экран. Наиболее простой форматы ее использования выглядит следующим образом:

MORE /E [/C] [/P] [/S] [/Tn] [+n] [файлы]

/E – Разрешение использования дополнительных возможностей.

/C – Очистка экрана перед выводом каждой страницы.

/P – Учет символов перевода страницы.

/S – Сжатие нескольких пустых строк в одну строку.

/Tn –Замена табуляции n пробелами (по умолчанию n = 8).

+n – Начало вывода первого файла со строки с номером n.

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

P n – Вывод следующих n строк.

S n – Пропуск следующих n строк.

F – Вывод следующего файла.

Q – Завершение работы.

= – Вывод номера строки.

? – Вывод строки подсказки.

– Вывод следующей страницы.

– Вывод следующей строки.

Помимо текстового редактора Notepad, являющегося неотъемлемой частью стандартного набора приложений Windows, командная строка позволяет создавать и редактировать текстовые файлы при помощи утилиты Edit – текстового редактора унаследованного еще от MS DOS. Меню (допускающее управление мышью) и команды (сочетания клавиш) этого редактора практически аналогичны Notepad – и в этом нет ничего удивительного, поскольку Notepad является прямым наследником Edit. В рамках данного лабораторного практикума использование этой весьма полезной утилиты осложняют проблемы с русификацией.

Для создания текстовых файлов непосредственно в командной строке можно использовать копирование текста (§ 1.4) со стандартной консоли (клавиатуры), а также перенаправление стандартного ввода/вывода команд в текстовый файл (§ 2.3).

Если в командной строке Windows набрать и подтвердить путь к текстовому файлу (с расширением «.txt»), то это приведет к открытию текстового файла в редакторе Notepad – поскольку txt-файлы, по умолчанию, ассоциированы с этим приложением Windows.

Удаление одного или нескольких файлов в командной строке Windows осуществляется равноценными по действию командами DEL и ERASE (Пример 1.20). Для реализации примера необходимо создать в Notepad текстовый файл (скажем, ERROR.TXT) и размесить его в своем рабочем каталоге (в примерах практикума – это каталог D:WINLAB).

Пример 1.20. Удаление файла (не обязательно текстового)

В общем случае команды DEL и ERASE имеют нижеследующий формат (далее по тексту формата: «имена» – список из одного или нескольких файлов или каталогов, если указан каталог, будут удалены все файлы в этом каталоге):

DEL [/P] [/F] [/S] [/Q] [/A[[:]атрибуты]] имена

ERASE [/P] [/F] [/S] [/Q] [/A[[:]атрибуты]] имена

/P – Запрос подтверждения перед удалением каждого файла.

/F – Принудительное удаление файлов, только для чтения.

/S – Удаление указанных файлов из всех подкаталогов.

/Q – Отключение запроса на подтверждение удаления файлов.

/A – Отбор файлов для удаления по атрибутам:

R – Файлы, доступные только для чтения;

S – Системные файлы; H – Скрытые файлы;

A – Файлы, готовые для архивирования;

I – Файлы с неиндексированным содержимым;

L – Точки повторной обработки;

Префикс «-» имеет значение НЕ.

При включении расширенной обработки команд DEL и ERASE результаты вывода для ключа /S принимают обратный характер, то есть выводятся только имена удаленных файлов, а не файлов, которые не удалось найти.

Источник

Список команд Windows ( Windows CMD ) с описанием и примерами.

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

Способы запуска командной строки

Ссылки на материалы по настройке командной строки и приемах работы с ней размещены в конце страницы.

Справочник по командам CMD Windows

Данная страница представляет собой самый полный документ в русскоязычном сегменте Интернет, содержащий список команд командной строки всех версий Windows. Наименования подавляющего большинства команд являются ссылками и ведут на страницы с подробным их описанием и примерами использования. В разных версиях ОС семейства Windows набор поддерживаемых команд, их параметры командной строки, синтаксис и отображение результатов выполнения могут различаться. Одна и та же утилита командной строки может присутствовать в стандартной поставке одной версии Windows, но отсутствовать в другой, или входить в состав дополнительных средств, как например, Resource Kit или Software Development Kit.

На данной странице представлено описание не только внутренних команд CMD, но и стандартных утилит командной строки, входящих в состав конкретных версии операционной системы (ОС) семейства Windows. Некоторые из приведенных команд устарели, и больше не поддерживаются разработчиком или не имеют смысла в современных операционных системах, что отмечается в описании команды.

Список команд постоянно обновляется и включает в себя все новейшие команды, добавляемые в стандартную поставку при выходе новых версий или обновлений ОС Windows 10.

IPCONFIG просмотр и управление конфигурацией протокола IP

PING утилита проверки доступности узла

SHIFT сдвиг входных параметров для командного файла

Прочие материалы по работе с командной строкой Windows:

Источник

Note — Be sure to see the update at the end of this answer for a link to the superior JREPL.BAT that supersedes REPL.BAT
JREPL.BAT 7.0 and above natively supports unicode (UTF-16LE) via the /UTF option, as well as any other character set, including UTF-8, via ADO!!!!


I have written a small hybrid JScript/batch utility called REPL.BAT that is very convenient for modifying ASCII (or extended ASCII) files via the command line or a batch file. The purely native script does not require installation of any 3rd party executeable, and it works on any modern Windows version from XP onward. It is also very fast, especially when compared to pure batch solutions.

REPL.BAT simply reads stdin, performs a JScript regex search and replace, and writes the result to stdout.

Here is a trivial example of how to replace foo with bar in test.txt, assuming REPL.BAT is in your current folder, or better yet, somewhere within your PATH:

type test.txt|repl "foo" "bar" >test.txt.new
move /y test.txt.new test.txt

The JScript regex capabilities make it very powerful, especially the ability of the replacement text to reference captured substrings from the search text.

I’ve included a number of options in the utility that make it quite powerful. For example, combining the M and X options enable modification of binary files! The M Multi-line option allows searches across multiple lines. The X eXtended substitution pattern option provides escape sequences that enable inclusion of any binary value in the replacement text.

The entire utility could have been written as pure JScript, but the hybrid batch file eliminates the need to explicitly specify CSCRIPT every time you want to use the utility.

Here is the REPL.BAT script. Full documentation is embedded within the script.

@if (@X)==(@Y) @end /* Harmless hybrid line that begins a JScript comment

::************ Documentation ***********
::REPL.BAT version 6.2
:::
:::REPL  Search  Replace  [Options  [SourceVar]]
:::REPL  /?[REGEX|REPLACE]
:::REPL  /V
:::
:::  Performs a global regular expression search and replace operation on
:::  each line of input from stdin and prints the result to stdout.
:::
:::  Each parameter may be optionally enclosed by double quotes. The double
:::  quotes are not considered part of the argument. The quotes are required
:::  if the parameter contains a batch token delimiter like space, tab, comma,
:::  semicolon. The quotes should also be used if the argument contains a
:::  batch special character like &, |, etc. so that the special character
:::  does not need to be escaped with ^.
:::
:::  If called with a single argument of /?, then prints help documentation
:::  to stdout. If a single argument of /?REGEX, then opens up Microsoft's
:::  JScript regular expression documentation within your browser. If a single
:::  argument of /?REPLACE, then opens up Microsoft's JScript REPLACE
:::  documentation within your browser.
:::
:::  If called with a single argument of /V, case insensitive, then prints
:::  the version of REPL.BAT.
:::
:::  Search  - By default, this is a case sensitive JScript (ECMA) regular
:::            expression expressed as a string.
:::
:::            JScript regex syntax documentation is available at
:::            http://msdn.microsoft.com/en-us/library/ae5bf541(v=vs.80).aspx
:::
:::  Replace - By default, this is the string to be used as a replacement for
:::            each found search expression. Full support is provided for
:::            substituion patterns available to the JScript replace method.
:::
:::            For example, $& represents the portion of the source that matched
:::            the entire search pattern, $1 represents the first captured
:::            submatch, $2 the second captured submatch, etc. A $ literal
:::            can be escaped as $$.
:::
:::            An empty replacement string must be represented as "".
:::
:::            Replace substitution pattern syntax is fully documented at
:::            http://msdn.microsoft.com/en-US/library/efy6s3e6(v=vs.80).aspx
:::
:::  Options - An optional string of characters used to alter the behavior
:::            of REPL. The option characters are case insensitive, and may
:::            appear in any order.
:::
:::            A - Only print altered lines. Unaltered lines are discarded.
:::                If the S options is present, then prints the result only if
:::                there was a change anywhere in the string. The A option is
:::                incompatible with the M option unless the S option is present.
:::
:::            B - The Search must match the beginning of a line.
:::                Mostly used with literal searches.
:::
:::            E - The Search must match the end of a line.
:::                Mostly used with literal searches.
:::
:::            I - Makes the search case-insensitive.
:::
:::            J - The Replace argument represents a JScript expression.
:::                The expression may access an array like arguments object
:::                named $. However, $ is not a true array object.
:::
:::                The $.length property contains the total number of arguments
:::                available. The $.length value is equal to n+3, where n is the
:::                number of capturing left parentheses within the Search string.
:::
:::                $[0] is the substring that matched the Search,
:::                $[1] through $[n] are the captured submatch strings,
:::                $[n+1] is the offset where the match occurred, and
:::                $[n+2] is the original source string.
:::
:::                Arguments $[0] through $[10] may be abbreviated as
:::                $1 through $10. Argument $[11] and above must use the square
:::                bracket notation.
:::
:::            L - The Search is treated as a string literal instead of a
:::                regular expression. Also, all $ found in the Replace string
:::                are treated as $ literals.
:::
:::            M - Multi-line mode. The entire contents of stdin is read and
:::                processed in one pass instead of line by line, thus enabling
:::                search for n. This also enables preservation of the original
:::                line terminators. If the M option is not present, then every
:::                printed line is terminated with carriage return and line feed.
:::                The M option is incompatible with the A option unless the S
:::                option is also present.
:::
:::                Note: If working with binary data containing NULL bytes,
:::                      then the M option must be used.
:::
:::            S - The source is read from an environment variable instead of
:::                from stdin. The name of the source environment variable is
:::                specified in the next argument after the option string. Without
:::                the M option, ^ anchors the beginning of the string, and $ the
:::                end of the string. With the M option, ^ anchors the beginning
:::                of a line, and $ the end of a line.
:::
:::            V - Search and Replace represent the name of environment
:::                variables that contain the respective values. An undefined
:::                variable is treated as an empty string.
:::
:::            X - Enables extended substitution pattern syntax with support
:::                for the following escape sequences within the Replace string:
:::
:::                \     -  Backslash
:::                b     -  Backspace
:::                f     -  Formfeed
:::                n     -  Newline
:::                q     -  Quote
:::                r     -  Carriage Return
:::                t     -  Horizontal Tab
:::                v     -  Vertical Tab
:::                xnn   -  Extended ASCII byte code expressed as 2 hex digits
:::                unnnn -  Unicode character expressed as 4 hex digits
:::
:::                Also enables the q escape sequence for the Search string.
:::                The other escape sequences are already standard for a regular
:::                expression Search string.
:::
:::                Also modifies the behavior of xnn in the Search string to work
:::                properly with extended ASCII byte codes.
:::
:::                Extended escape sequences are supported even when the L option
:::                is used. Both Search and Replace support all of the extended
:::                escape sequences if both the X and L opions are combined.
:::
:::  Return Codes:  0 = At least one change was made
:::                     or the /? or /V option was used
:::
:::                 1 = No change was made
:::
:::                 2 = Invalid call syntax or incompatible options
:::
:::                 3 = JScript runtime error, typically due to invalid regex
:::
::: REPL.BAT was written by Dave Benham, with assistance from DosTips user Aacini
::: to get xnn to work properly with extended ASCII byte codes. Also assistance
::: from DosTips user penpen diagnosing issues reading NULL bytes, along with a
::: workaround. REPL.BAT was originally posted at:
::: http://www.dostips.com/forum/viewtopic.php?f=3&t=3855
:::

::************ Batch portion ***********
@echo off
if .%2 equ . (
  if "%~1" equ "/?" (
    <"%~f0" cscript //E:JScript //nologo "%~f0" "^:::" "" a
    exit /b 0
  ) else if /i "%~1" equ "/?regex" (
    explorer "http://msdn.microsoft.com/en-us/library/ae5bf541(v=vs.80).aspx"
    exit /b 0
  ) else if /i "%~1" equ "/?replace" (
    explorer "http://msdn.microsoft.com/en-US/library/efy6s3e6(v=vs.80).aspx"
    exit /b 0
  ) else if /i "%~1" equ "/V" (
    <"%~f0" cscript //E:JScript //nologo "%~f0" "^::(REPL.BAT version)" "$1" a
    exit /b 0
  ) else (
    call :err "Insufficient arguments"
    exit /b 2
  )
)
echo(%~3|findstr /i "[^SMILEBVXAJ]" >nul && (
  call :err "Invalid option(s)"
  exit /b 2
)
echo(%~3|findstr /i "M"|findstr /i "A"|findstr /vi "S" >nul && (
  call :err "Incompatible options"
  exit /b 2
)
cscript //E:JScript //nologo "%~f0" %*
exit /b %errorlevel%

:err
>&2 echo ERROR: %~1. Use REPL /? to get help.
exit /b

************* JScript portion **********/
var rtn=1;
try {
  var env=WScript.CreateObject("WScript.Shell").Environment("Process");
  var args=WScript.Arguments;
  var search=args.Item(0);
  var replace=args.Item(1);
  var options="g";
  if (args.length>2) options+=args.Item(2).toLowerCase();
  var multi=(options.indexOf("m")>=0);
  var alterations=(options.indexOf("a")>=0);
  if (alterations) options=options.replace(/a/g,"");
  var srcVar=(options.indexOf("s")>=0);
  if (srcVar) options=options.replace(/s/g,"");
  var jexpr=(options.indexOf("j")>=0);
  if (jexpr) options=options.replace(/j/g,"");
  if (options.indexOf("v")>=0) {
    options=options.replace(/v/g,"");
    search=env(search);
    replace=env(replace);
  }
  if (options.indexOf("x")>=0) {
    options=options.replace(/x/g,"");
    if (!jexpr) {
      replace=replace.replace(/\\/g,"\B");
      replace=replace.replace(/\q/g,""");
      replace=replace.replace(/\x80/g,"\u20AC");
      replace=replace.replace(/\x82/g,"\u201A");
      replace=replace.replace(/\x83/g,"\u0192");
      replace=replace.replace(/\x84/g,"\u201E");
      replace=replace.replace(/\x85/g,"\u2026");
      replace=replace.replace(/\x86/g,"\u2020");
      replace=replace.replace(/\x87/g,"\u2021");
      replace=replace.replace(/\x88/g,"\u02C6");
      replace=replace.replace(/\x89/g,"\u2030");
      replace=replace.replace(/\x8[aA]/g,"\u0160");
      replace=replace.replace(/\x8[bB]/g,"\u2039");
      replace=replace.replace(/\x8[cC]/g,"\u0152");
      replace=replace.replace(/\x8[eE]/g,"\u017D");
      replace=replace.replace(/\x91/g,"\u2018");
      replace=replace.replace(/\x92/g,"\u2019");
      replace=replace.replace(/\x93/g,"\u201C");
      replace=replace.replace(/\x94/g,"\u201D");
      replace=replace.replace(/\x95/g,"\u2022");
      replace=replace.replace(/\x96/g,"\u2013");
      replace=replace.replace(/\x97/g,"\u2014");
      replace=replace.replace(/\x98/g,"\u02DC");
      replace=replace.replace(/\x99/g,"\u2122");
      replace=replace.replace(/\x9[aA]/g,"\u0161");
      replace=replace.replace(/\x9[bB]/g,"\u203A");
      replace=replace.replace(/\x9[cC]/g,"\u0153");
      replace=replace.replace(/\x9[dD]/g,"\u009D");
      replace=replace.replace(/\x9[eE]/g,"\u017E");
      replace=replace.replace(/\x9[fF]/g,"\u0178");
      replace=replace.replace(/\b/g,"b");
      replace=replace.replace(/\f/g,"f");
      replace=replace.replace(/\n/g,"n");
      replace=replace.replace(/\r/g,"r");
      replace=replace.replace(/\t/g,"t");
      replace=replace.replace(/\v/g,"v");
      replace=replace.replace(/\x[0-9a-fA-F]{2}|\u[0-9a-fA-F]{4}/g,
        function($0,$1,$2){
          return String.fromCharCode(parseInt("0x"+$0.substring(2)));
        }
      );
      replace=replace.replace(/\B/g,"\");
    }
    search=search.replace(/\\/g,"\B");
    search=search.replace(/\q/g,""");
    search=search.replace(/\x80/g,"\u20AC");
    search=search.replace(/\x82/g,"\u201A");
    search=search.replace(/\x83/g,"\u0192");
    search=search.replace(/\x84/g,"\u201E");
    search=search.replace(/\x85/g,"\u2026");
    search=search.replace(/\x86/g,"\u2020");
    search=search.replace(/\x87/g,"\u2021");
    search=search.replace(/\x88/g,"\u02C6");
    search=search.replace(/\x89/g,"\u2030");
    search=search.replace(/\x8[aA]/g,"\u0160");
    search=search.replace(/\x8[bB]/g,"\u2039");
    search=search.replace(/\x8[cC]/g,"\u0152");
    search=search.replace(/\x8[eE]/g,"\u017D");
    search=search.replace(/\x91/g,"\u2018");
    search=search.replace(/\x92/g,"\u2019");
    search=search.replace(/\x93/g,"\u201C");
    search=search.replace(/\x94/g,"\u201D");
    search=search.replace(/\x95/g,"\u2022");
    search=search.replace(/\x96/g,"\u2013");
    search=search.replace(/\x97/g,"\u2014");
    search=search.replace(/\x98/g,"\u02DC");
    search=search.replace(/\x99/g,"\u2122");
    search=search.replace(/\x9[aA]/g,"\u0161");
    search=search.replace(/\x9[bB]/g,"\u203A");
    search=search.replace(/\x9[cC]/g,"\u0153");
    search=search.replace(/\x9[dD]/g,"\u009D");
    search=search.replace(/\x9[eE]/g,"\u017E");
    search=search.replace(/\x9[fF]/g,"\u0178");
    if (options.indexOf("l")>=0) {
      search=search.replace(/\b/g,"b");
      search=search.replace(/\f/g,"f");
      search=search.replace(/\n/g,"n");
      search=search.replace(/\r/g,"r");
      search=search.replace(/\t/g,"t");
      search=search.replace(/\v/g,"v");
      search=search.replace(/\x[0-9a-fA-F]{2}|\u[0-9a-fA-F]{4}/g,
        function($0,$1,$2){
          return String.fromCharCode(parseInt("0x"+$0.substring(2)));
        }
      );
      search=search.replace(/\B/g,"\");
    } else search=search.replace(/\B/g,"\\");
  }
  if (options.indexOf("l")>=0) {
    options=options.replace(/l/g,"");
    search=search.replace(/([.^$*+?()[{\|])/g,"\$1");
    if (!jexpr) replace=replace.replace(/$/g,"$$$$");
  }
  if (options.indexOf("b")>=0) {
    options=options.replace(/b/g,"");
    search="^"+search
  }
  if (options.indexOf("e")>=0) {
    options=options.replace(/e/g,"");
    search=search+"$"
  }
  var search=new RegExp(search,options);
  var str1, str2;

  if (srcVar) {
    str1=env(args.Item(3));
    str2=str1.replace(search,jexpr?replFunc:replace);
    if (!alterations || str1!=str2) if (multi) {
      WScript.Stdout.Write(str2);
    } else {
      WScript.Stdout.WriteLine(str2);
    }
    if (str1!=str2) rtn=0;
  } else if (multi){
    var buf=1024;
    str1="";
    while (!WScript.StdIn.AtEndOfStream) {
      str1+=WScript.StdIn.Read(buf);
      buf*=2
    }
    str2=str1.replace(search,jexpr?replFunc:replace);
    WScript.Stdout.Write(str2);
    if (str1!=str2) rtn=0;
  } else {
    while (!WScript.StdIn.AtEndOfStream) {
      str1=WScript.StdIn.ReadLine();
      str2=str1.replace(search,jexpr?replFunc:replace);
      if (!alterations || str1!=str2) WScript.Stdout.WriteLine(str2);
      if (str1!=str2) rtn=0;
    }
  }
} catch(e) {
  WScript.Stderr.WriteLine("JScript runtime error: "+e.message);
  rtn=3;
}
WScript.Quit(rtn);

function replFunc($0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10) {
  var $=arguments;
  return(eval(replace));
}

IMPORTANT UPDATE

I have ceased development of REPL.BAT, and replaced it with JREPL.BAT. This newer utility has all the same functionality of REPL.BAT, plus much more:

  • Unicode UTF-16LE support via native CSCRIPT unicode capabilities, and any other character set (including UTF-8) via ADO.
  • Read directly from / write directly to a file: no need for pipes, redirection, or move command.
  • Incorporate user supplied JScript
  • Translation facility similar to unix tr, only it also supports regex search and JScript replace
  • Discard non-matching text
  • Prefix output lines with line number
  • and more…

As always, full documentation is embedded within the script.

The original trivial solution is now even simpler:

jrepl "foo" "bar" /f test.txt /o -

The current version of JREPL.BAT is available at DosTips. Read all of the subsequent posts in the thread to see examples of usage and a history of the development.

Note — Be sure to see the update at the end of this answer for a link to the superior JREPL.BAT that supersedes REPL.BAT
JREPL.BAT 7.0 and above natively supports unicode (UTF-16LE) via the /UTF option, as well as any other character set, including UTF-8, via ADO!!!!


I have written a small hybrid JScript/batch utility called REPL.BAT that is very convenient for modifying ASCII (or extended ASCII) files via the command line or a batch file. The purely native script does not require installation of any 3rd party executeable, and it works on any modern Windows version from XP onward. It is also very fast, especially when compared to pure batch solutions.

REPL.BAT simply reads stdin, performs a JScript regex search and replace, and writes the result to stdout.

Here is a trivial example of how to replace foo with bar in test.txt, assuming REPL.BAT is in your current folder, or better yet, somewhere within your PATH:

type test.txt|repl "foo" "bar" >test.txt.new
move /y test.txt.new test.txt

The JScript regex capabilities make it very powerful, especially the ability of the replacement text to reference captured substrings from the search text.

I’ve included a number of options in the utility that make it quite powerful. For example, combining the M and X options enable modification of binary files! The M Multi-line option allows searches across multiple lines. The X eXtended substitution pattern option provides escape sequences that enable inclusion of any binary value in the replacement text.

The entire utility could have been written as pure JScript, but the hybrid batch file eliminates the need to explicitly specify CSCRIPT every time you want to use the utility.

Here is the REPL.BAT script. Full documentation is embedded within the script.

@if (@X)==(@Y) @end /* Harmless hybrid line that begins a JScript comment

::************ Documentation ***********
::REPL.BAT version 6.2
:::
:::REPL  Search  Replace  [Options  [SourceVar]]
:::REPL  /?[REGEX|REPLACE]
:::REPL  /V
:::
:::  Performs a global regular expression search and replace operation on
:::  each line of input from stdin and prints the result to stdout.
:::
:::  Each parameter may be optionally enclosed by double quotes. The double
:::  quotes are not considered part of the argument. The quotes are required
:::  if the parameter contains a batch token delimiter like space, tab, comma,
:::  semicolon. The quotes should also be used if the argument contains a
:::  batch special character like &, |, etc. so that the special character
:::  does not need to be escaped with ^.
:::
:::  If called with a single argument of /?, then prints help documentation
:::  to stdout. If a single argument of /?REGEX, then opens up Microsoft's
:::  JScript regular expression documentation within your browser. If a single
:::  argument of /?REPLACE, then opens up Microsoft's JScript REPLACE
:::  documentation within your browser.
:::
:::  If called with a single argument of /V, case insensitive, then prints
:::  the version of REPL.BAT.
:::
:::  Search  - By default, this is a case sensitive JScript (ECMA) regular
:::            expression expressed as a string.
:::
:::            JScript regex syntax documentation is available at
:::            http://msdn.microsoft.com/en-us/library/ae5bf541(v=vs.80).aspx
:::
:::  Replace - By default, this is the string to be used as a replacement for
:::            each found search expression. Full support is provided for
:::            substituion patterns available to the JScript replace method.
:::
:::            For example, $& represents the portion of the source that matched
:::            the entire search pattern, $1 represents the first captured
:::            submatch, $2 the second captured submatch, etc. A $ literal
:::            can be escaped as $$.
:::
:::            An empty replacement string must be represented as "".
:::
:::            Replace substitution pattern syntax is fully documented at
:::            http://msdn.microsoft.com/en-US/library/efy6s3e6(v=vs.80).aspx
:::
:::  Options - An optional string of characters used to alter the behavior
:::            of REPL. The option characters are case insensitive, and may
:::            appear in any order.
:::
:::            A - Only print altered lines. Unaltered lines are discarded.
:::                If the S options is present, then prints the result only if
:::                there was a change anywhere in the string. The A option is
:::                incompatible with the M option unless the S option is present.
:::
:::            B - The Search must match the beginning of a line.
:::                Mostly used with literal searches.
:::
:::            E - The Search must match the end of a line.
:::                Mostly used with literal searches.
:::
:::            I - Makes the search case-insensitive.
:::
:::            J - The Replace argument represents a JScript expression.
:::                The expression may access an array like arguments object
:::                named $. However, $ is not a true array object.
:::
:::                The $.length property contains the total number of arguments
:::                available. The $.length value is equal to n+3, where n is the
:::                number of capturing left parentheses within the Search string.
:::
:::                $[0] is the substring that matched the Search,
:::                $[1] through $[n] are the captured submatch strings,
:::                $[n+1] is the offset where the match occurred, and
:::                $[n+2] is the original source string.
:::
:::                Arguments $[0] through $[10] may be abbreviated as
:::                $1 through $10. Argument $[11] and above must use the square
:::                bracket notation.
:::
:::            L - The Search is treated as a string literal instead of a
:::                regular expression. Also, all $ found in the Replace string
:::                are treated as $ literals.
:::
:::            M - Multi-line mode. The entire contents of stdin is read and
:::                processed in one pass instead of line by line, thus enabling
:::                search for n. This also enables preservation of the original
:::                line terminators. If the M option is not present, then every
:::                printed line is terminated with carriage return and line feed.
:::                The M option is incompatible with the A option unless the S
:::                option is also present.
:::
:::                Note: If working with binary data containing NULL bytes,
:::                      then the M option must be used.
:::
:::            S - The source is read from an environment variable instead of
:::                from stdin. The name of the source environment variable is
:::                specified in the next argument after the option string. Without
:::                the M option, ^ anchors the beginning of the string, and $ the
:::                end of the string. With the M option, ^ anchors the beginning
:::                of a line, and $ the end of a line.
:::
:::            V - Search and Replace represent the name of environment
:::                variables that contain the respective values. An undefined
:::                variable is treated as an empty string.
:::
:::            X - Enables extended substitution pattern syntax with support
:::                for the following escape sequences within the Replace string:
:::
:::                \     -  Backslash
:::                b     -  Backspace
:::                f     -  Formfeed
:::                n     -  Newline
:::                q     -  Quote
:::                r     -  Carriage Return
:::                t     -  Horizontal Tab
:::                v     -  Vertical Tab
:::                xnn   -  Extended ASCII byte code expressed as 2 hex digits
:::                unnnn -  Unicode character expressed as 4 hex digits
:::
:::                Also enables the q escape sequence for the Search string.
:::                The other escape sequences are already standard for a regular
:::                expression Search string.
:::
:::                Also modifies the behavior of xnn in the Search string to work
:::                properly with extended ASCII byte codes.
:::
:::                Extended escape sequences are supported even when the L option
:::                is used. Both Search and Replace support all of the extended
:::                escape sequences if both the X and L opions are combined.
:::
:::  Return Codes:  0 = At least one change was made
:::                     or the /? or /V option was used
:::
:::                 1 = No change was made
:::
:::                 2 = Invalid call syntax or incompatible options
:::
:::                 3 = JScript runtime error, typically due to invalid regex
:::
::: REPL.BAT was written by Dave Benham, with assistance from DosTips user Aacini
::: to get xnn to work properly with extended ASCII byte codes. Also assistance
::: from DosTips user penpen diagnosing issues reading NULL bytes, along with a
::: workaround. REPL.BAT was originally posted at:
::: http://www.dostips.com/forum/viewtopic.php?f=3&t=3855
:::

::************ Batch portion ***********
@echo off
if .%2 equ . (
  if "%~1" equ "/?" (
    <"%~f0" cscript //E:JScript //nologo "%~f0" "^:::" "" a
    exit /b 0
  ) else if /i "%~1" equ "/?regex" (
    explorer "http://msdn.microsoft.com/en-us/library/ae5bf541(v=vs.80).aspx"
    exit /b 0
  ) else if /i "%~1" equ "/?replace" (
    explorer "http://msdn.microsoft.com/en-US/library/efy6s3e6(v=vs.80).aspx"
    exit /b 0
  ) else if /i "%~1" equ "/V" (
    <"%~f0" cscript //E:JScript //nologo "%~f0" "^::(REPL.BAT version)" "$1" a
    exit /b 0
  ) else (
    call :err "Insufficient arguments"
    exit /b 2
  )
)
echo(%~3|findstr /i "[^SMILEBVXAJ]" >nul && (
  call :err "Invalid option(s)"
  exit /b 2
)
echo(%~3|findstr /i "M"|findstr /i "A"|findstr /vi "S" >nul && (
  call :err "Incompatible options"
  exit /b 2
)
cscript //E:JScript //nologo "%~f0" %*
exit /b %errorlevel%

:err
>&2 echo ERROR: %~1. Use REPL /? to get help.
exit /b

************* JScript portion **********/
var rtn=1;
try {
  var env=WScript.CreateObject("WScript.Shell").Environment("Process");
  var args=WScript.Arguments;
  var search=args.Item(0);
  var replace=args.Item(1);
  var options="g";
  if (args.length>2) options+=args.Item(2).toLowerCase();
  var multi=(options.indexOf("m")>=0);
  var alterations=(options.indexOf("a")>=0);
  if (alterations) options=options.replace(/a/g,"");
  var srcVar=(options.indexOf("s")>=0);
  if (srcVar) options=options.replace(/s/g,"");
  var jexpr=(options.indexOf("j")>=0);
  if (jexpr) options=options.replace(/j/g,"");
  if (options.indexOf("v")>=0) {
    options=options.replace(/v/g,"");
    search=env(search);
    replace=env(replace);
  }
  if (options.indexOf("x")>=0) {
    options=options.replace(/x/g,"");
    if (!jexpr) {
      replace=replace.replace(/\\/g,"\B");
      replace=replace.replace(/\q/g,""");
      replace=replace.replace(/\x80/g,"\u20AC");
      replace=replace.replace(/\x82/g,"\u201A");
      replace=replace.replace(/\x83/g,"\u0192");
      replace=replace.replace(/\x84/g,"\u201E");
      replace=replace.replace(/\x85/g,"\u2026");
      replace=replace.replace(/\x86/g,"\u2020");
      replace=replace.replace(/\x87/g,"\u2021");
      replace=replace.replace(/\x88/g,"\u02C6");
      replace=replace.replace(/\x89/g,"\u2030");
      replace=replace.replace(/\x8[aA]/g,"\u0160");
      replace=replace.replace(/\x8[bB]/g,"\u2039");
      replace=replace.replace(/\x8[cC]/g,"\u0152");
      replace=replace.replace(/\x8[eE]/g,"\u017D");
      replace=replace.replace(/\x91/g,"\u2018");
      replace=replace.replace(/\x92/g,"\u2019");
      replace=replace.replace(/\x93/g,"\u201C");
      replace=replace.replace(/\x94/g,"\u201D");
      replace=replace.replace(/\x95/g,"\u2022");
      replace=replace.replace(/\x96/g,"\u2013");
      replace=replace.replace(/\x97/g,"\u2014");
      replace=replace.replace(/\x98/g,"\u02DC");
      replace=replace.replace(/\x99/g,"\u2122");
      replace=replace.replace(/\x9[aA]/g,"\u0161");
      replace=replace.replace(/\x9[bB]/g,"\u203A");
      replace=replace.replace(/\x9[cC]/g,"\u0153");
      replace=replace.replace(/\x9[dD]/g,"\u009D");
      replace=replace.replace(/\x9[eE]/g,"\u017E");
      replace=replace.replace(/\x9[fF]/g,"\u0178");
      replace=replace.replace(/\b/g,"b");
      replace=replace.replace(/\f/g,"f");
      replace=replace.replace(/\n/g,"n");
      replace=replace.replace(/\r/g,"r");
      replace=replace.replace(/\t/g,"t");
      replace=replace.replace(/\v/g,"v");
      replace=replace.replace(/\x[0-9a-fA-F]{2}|\u[0-9a-fA-F]{4}/g,
        function($0,$1,$2){
          return String.fromCharCode(parseInt("0x"+$0.substring(2)));
        }
      );
      replace=replace.replace(/\B/g,"\");
    }
    search=search.replace(/\\/g,"\B");
    search=search.replace(/\q/g,""");
    search=search.replace(/\x80/g,"\u20AC");
    search=search.replace(/\x82/g,"\u201A");
    search=search.replace(/\x83/g,"\u0192");
    search=search.replace(/\x84/g,"\u201E");
    search=search.replace(/\x85/g,"\u2026");
    search=search.replace(/\x86/g,"\u2020");
    search=search.replace(/\x87/g,"\u2021");
    search=search.replace(/\x88/g,"\u02C6");
    search=search.replace(/\x89/g,"\u2030");
    search=search.replace(/\x8[aA]/g,"\u0160");
    search=search.replace(/\x8[bB]/g,"\u2039");
    search=search.replace(/\x8[cC]/g,"\u0152");
    search=search.replace(/\x8[eE]/g,"\u017D");
    search=search.replace(/\x91/g,"\u2018");
    search=search.replace(/\x92/g,"\u2019");
    search=search.replace(/\x93/g,"\u201C");
    search=search.replace(/\x94/g,"\u201D");
    search=search.replace(/\x95/g,"\u2022");
    search=search.replace(/\x96/g,"\u2013");
    search=search.replace(/\x97/g,"\u2014");
    search=search.replace(/\x98/g,"\u02DC");
    search=search.replace(/\x99/g,"\u2122");
    search=search.replace(/\x9[aA]/g,"\u0161");
    search=search.replace(/\x9[bB]/g,"\u203A");
    search=search.replace(/\x9[cC]/g,"\u0153");
    search=search.replace(/\x9[dD]/g,"\u009D");
    search=search.replace(/\x9[eE]/g,"\u017E");
    search=search.replace(/\x9[fF]/g,"\u0178");
    if (options.indexOf("l")>=0) {
      search=search.replace(/\b/g,"b");
      search=search.replace(/\f/g,"f");
      search=search.replace(/\n/g,"n");
      search=search.replace(/\r/g,"r");
      search=search.replace(/\t/g,"t");
      search=search.replace(/\v/g,"v");
      search=search.replace(/\x[0-9a-fA-F]{2}|\u[0-9a-fA-F]{4}/g,
        function($0,$1,$2){
          return String.fromCharCode(parseInt("0x"+$0.substring(2)));
        }
      );
      search=search.replace(/\B/g,"\");
    } else search=search.replace(/\B/g,"\\");
  }
  if (options.indexOf("l")>=0) {
    options=options.replace(/l/g,"");
    search=search.replace(/([.^$*+?()[{\|])/g,"\$1");
    if (!jexpr) replace=replace.replace(/$/g,"$$$$");
  }
  if (options.indexOf("b")>=0) {
    options=options.replace(/b/g,"");
    search="^"+search
  }
  if (options.indexOf("e")>=0) {
    options=options.replace(/e/g,"");
    search=search+"$"
  }
  var search=new RegExp(search,options);
  var str1, str2;

  if (srcVar) {
    str1=env(args.Item(3));
    str2=str1.replace(search,jexpr?replFunc:replace);
    if (!alterations || str1!=str2) if (multi) {
      WScript.Stdout.Write(str2);
    } else {
      WScript.Stdout.WriteLine(str2);
    }
    if (str1!=str2) rtn=0;
  } else if (multi){
    var buf=1024;
    str1="";
    while (!WScript.StdIn.AtEndOfStream) {
      str1+=WScript.StdIn.Read(buf);
      buf*=2
    }
    str2=str1.replace(search,jexpr?replFunc:replace);
    WScript.Stdout.Write(str2);
    if (str1!=str2) rtn=0;
  } else {
    while (!WScript.StdIn.AtEndOfStream) {
      str1=WScript.StdIn.ReadLine();
      str2=str1.replace(search,jexpr?replFunc:replace);
      if (!alterations || str1!=str2) WScript.Stdout.WriteLine(str2);
      if (str1!=str2) rtn=0;
    }
  }
} catch(e) {
  WScript.Stderr.WriteLine("JScript runtime error: "+e.message);
  rtn=3;
}
WScript.Quit(rtn);

function replFunc($0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10) {
  var $=arguments;
  return(eval(replace));
}

IMPORTANT UPDATE

I have ceased development of REPL.BAT, and replaced it with JREPL.BAT. This newer utility has all the same functionality of REPL.BAT, plus much more:

  • Unicode UTF-16LE support via native CSCRIPT unicode capabilities, and any other character set (including UTF-8) via ADO.
  • Read directly from / write directly to a file: no need for pipes, redirection, or move command.
  • Incorporate user supplied JScript
  • Translation facility similar to unix tr, only it also supports regex search and JScript replace
  • Discard non-matching text
  • Prefix output lines with line number
  • and more…

As always, full documentation is embedded within the script.

The original trivial solution is now even simpler:

jrepl "foo" "bar" /f test.txt /o -

The current version of JREPL.BAT is available at DosTips. Read all of the subsequent posts in the thread to see examples of usage and a history of the development.

На чтение 15 мин. Просмотров 840 Опубликовано 28.01.2021

В Unix я бы просто использовал vi, но я не знаю, что это за команда в Windows. На самом деле я пытаюсь редактировать файлы через SSH с помощью Windows Server 2008.


edit filename

Я не ручаюсь за его функциональность и устаревший графический интерфейс, но он установлен по умолчанию даже в Windows 7.

Изменить: За исключением 64-битных версий Windows.


Самое простое решение для всех версий Windows:

  C: > notepad somefile.txt  

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

отредактировал 7 сентября ’18 в 16:51

Питер Мортенсен

11.3k2222 золотых знака6464 серебряных знака8686 бронзовых знаков

  • Красиво, но не через SSH – Casebash Sep 10 ’10 в 4:10

  • Ах. Правильно. В Windows нет встроенного редактора командной строки. Возможно, вам потребуется установить версию Gnu редактора, который вы хотите использовать. Поскольку вы уже установили сервер ssh , это не должно быть проблемой для вас. – BillP3rd, 10 сентября 2010 г., 16:27

  • Как сказал OP … «Я на самом деле пытаюсь редактировать файлы через ssh …» – daviewales 13 апр. ’14 в 3:16

  • бесполезный ответ, как для пользователей ssh, так и для тех, кто хочет редактировать файлы В окне cmd, а не за его пределами – vladkras 14 фев 2016 в 07:10

  • Это не будет работать в контейнере Docker, основанном на ‘windowsservercore’ – Питер Мортенсен 28 августа ’18 в 9 : 17

| показать 4 дополнительных комментария


Самое простое решение для всех версий в Windows:

  C: > notepad somefile.txt  

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


В командной строке Windows введите copy con , за которым следует имя целевого файла. ( copy con c: file.txt ).

Затем введите текст, который вы хотите поместить в файл.

Завершите и сохраните файл, нажав CTRL Z , затем Enter или F6 , затем Enter .

Если вы хотите изменить текст в существующем файле, просто отобразите текст с помощью команды type , за которым следует имя файла, а затем просто скопируйте и вставьте текст в команду copy con .

отредактировал 28 августа 2018 в 9:31

Peter Mortensen

11.3k2222 золотых знака6464 серебряных знака8686 бронзовых знаков

ответил 03 декабря 2013 в 18:15

  • Жесткое ядро. Постарайтесь не делать опечаток, иначе вам придется начинать заново. Что ж, backspace действительно работает, если вы поймаете ошибку до того, как нажмете Enter. – Кевин Панко 03 дек. ’13 в 18:57

  • Кажется, не работает с psexec. Пытался отредактировать файл моих хостов с помощью copy con hosts , но ^ Z не сохраняет и ^ C не отменяет! Пришлось закрыть окно cmd, чтобы выйти. Файл остался без изменений. – Иэн Сэмюэл Маклин, старейшина, 27 мая 2014, 11:17

  • Примечание. F6 можно использовать вместо [Ctrl] – [Z] – MonoThreaded 13 сен 2014 в 09:58

  • В контейнере Docker на основе ‘windowsservercore’ (CMD) , Ctrl + C работал для завершающей последовательности клавиш. – Питер Мортенсен, 28 августа ’18 в 9:30

добавить комментарий |


В командной строке Windows введите copy con , а затем имя целевого файла. ( copy con c: file.txt ).

Затем введите текст, который вы хотите поместить в файл.

Завершите и сохраните файл, нажав CTRL Z , затем Enter или F6 затем Enter .

Если вы хотите изменить текст в существующем файле, просто отобразите текст с помощью команды type , за которой следует по имени файла, а затем просто скопируйте и вставьте текст в команду copy con .


Если вы привыкли к vi и не хотите довольствоваться встроенным редактором, вы можете получить Vim для Windows . Он будет запускаться из командной оболочки. Или попробуйте WinVi.

отредактировано 15 сен ’18 в 23:34

Peter Mortensen

11.3k2222 золотых знака6464 серебряных знака8686 бронзовых знаков

ответил 10 сентября ’10 в 3:54

  • это должно быть отмечено как ответ, потому что edit был удалено из победы 10 – Люк, 14 июня ’18 в 18:36

  • Это намного лучше: он также работает внутри контейнера Windows Docker (проще всего получить «исполняемый файл консоли Win32», например vim81w32.zip – разархивируйте и скопируйте vim.exe везде, где он доступен в контейнере Docker). – Питер Мортенсен 15 сен. ’18 в 23:38

добавить комментарий |


Если вы привыкли к vi и не хотите соглашаться на встроенный редактор, вы можете получить Vim для Windows . Он будет запускаться из командной оболочки. Или попробуйте WinVi.


Верьте или нет, EDLIN.EXE все еще около по крайней мере в этой системе Vista.

Простите, я тихонько рыдаю про себя …

ответил 10 сентября ’10 в 7:04

  • Он был окончательно удален в Windows 7 (по крайней мере, 64-битные версии ). – paradroid 10 сен. ’10 в 7:11

  • @ jason404: он все еще включен в 32-битную Windows 7. – Деннис Уильямсон, 10 сентября 2010 г., 15:08

  • edlin – это 16-разрядная программа, поэтому она недоступна в 64-разрядных версиях Windows. Однако я не удивлюсь, если кто-то здесь заявит, что он все еще присутствует в 32-разрядной версии Windows 10. – TSJNachos117, 12 мая 2015 г., 7:54

  • @ TSJNachos117 Это действительно в x86 Windows 10. – Брайан Дадди, 12 окт. : 19

  • Не удивлен все. – TSJNachos117, 30 янв. ’17 в 21:44

добавить комментарий |


Хотите верьте, хотите нет, но EDLIN.EXE все еще находится рядом с по крайней мере в этой системе Vista.

Простите, я тихонько рыдаю про себя …


Я не знаю о SSH или о чем-то (еще?), связанном с сервером , так что простите меня, если это “решение” бесполезно. Если вы хотите редактировать файлы в командной строке, вы можете получить версию Nano для Windows.

В качестве примечания, эти маленькие значки ^ внизу окна должны представлять кнопку Ctrl . Например, ^ X Exit означает, что вы можете выйти из программы, используя Ctrl X .

Кроме того, Nano иногда добавляет дополнительные символы новой строки при сохранении файлов. Кажется, это какая-то ошибка с переносом слов в Nano.

Я также видел порты vi для Windows, хотя я использовал тот, который, похоже, делает окно командной строки таким маленьким, как это может быть, оставив только строку заголовка (что означает, что остальная часть окна также может быть невидимой, поскольку вы не можете видеть, что делаете). Однако версия Vim для Windows, похоже, работает довольно хорошо.

отредактировал 15 сентября ’18 в 23:41

Питер Мортенсен

11.3k2222 золотых знака6464 серебряных знака8686 бронзовых знаков

ответил 22 июля ’13 в 6:52

  • Перед поиском тех, кто работают, но бесполезные решения », – подумал я для Windows-порта Nano. Он использует cygwin.dll и не более того. Я пикетировал самую легкую версию, которую могу, с netcologne.dl.sourceforge.net/project/nano/nano/1.0.8/…. Спасибо. – m3nda 26 янв. ’17 в 16:46

  • Как отметил @gman, если у вас установлен git, значит, у вас уже есть nano.exe . Кроме того, довольно просто установить nano из командной строки с помощью chocolatey (chocolatey.org/install#individual). После установки chocolatey установите nano, набрав choco install nano . – cowlinator 17 июл. ’20 в 17:01

добавить комментарий |


Я не знаю про SSH или что-то (еще?), связанное с сервером, так что простите меня, если это “решение” бесполезно . Если вы хотите редактировать файлы в командной строке, вы можете получить версию Nano для Windows..

В качестве примечания: эти маленькие знаки ^ внизу окна должны представлять кнопку Ctrl . Например, ^ X Exit означает, что вы можете выйти из программы, используя Ctrl X .

Кроме того, Nano иногда добавляет дополнительные символы новой строки при сохранении файлов. Кажется, это какая-то ошибка с переносом слов в Nano.

Я также видел порты vi для Windows, хотя я использовал тот, который, похоже, делает окно командной строки таким маленьким, как это может быть, оставив только строку заголовка (что означает, что остальная часть окна также может быть невидимой, поскольку вы не можете видеть, что делаете). Однако версия Vim для Windows, похоже, работает довольно хорошо.


Если у вас установлен git для Windows, то, скорее всего, и nano, и vim доступны по адресу

  C:  Program Files  Git  usr  bin  nano  .exeC:  Program Files  Git  usr  bin  vim.exe  

Для запуска из командной строки (cmd.exe)

  "c:  Program Files  Git  usr  bin  nano.exe"  

Для запуска в PowerShell

   & 'C:  Program Files  Git  usr  bin  nano.exe'  

Они оба отлично работают даже по ssh.

ответил 16 июня ‘ 20 в 8:25

  • Спасибо! Git imo – более разумная зависимость, которая, скорее всего, уже находится на сервере, в отличие от WSL или других сторонних текстовых редакторов. – Конафа 12 июл.2020, в 1:02

добавить комментарий |


Если у вас установлен git для Windows, то, скорее всего, nano и vim доступны по адресу

  C:  Program Files  Git  usr  bin  nano.exe C:  Program Files  Git  usr  bin  vim.exe  

Для запуска из команды подсказка (cmd.exe)

  "c:  Program Files  Git  usr  bin  nano.exe"  

Для запуска в PowerShell

  & 'C:  Program Files  Git  usr  bin  nano.exe'  

Оба они отлично работают даже по ssh.


ОБНОВЛЕНИЕ 2020:

В Win10 просто включите подсистему linux, тогда у вас будет большая часть вещей Linux, таких как vim и nano :

  c:> bash $: nano ваш файл. txt  

ответил 03 июля ’20 в 15:50

  • Подсистема linux? Это что, теперь в W10? – Томас Кимбер, 8 августа ’20 в 10:15

  • Хорошо, просто погуглил – хорошая идея, но установить весь дистрибутив Linux, чтобы включить редактор терминала? Это натянуто. Тем не менее, возможно, попробуем;) – Томас Кимбер 8 авг., 10:30

добавить комментарий |


ОБНОВЛЕНИЕ 2020:

В Win10 просто включите подсистему linux, тогда у вас будет большая часть Linux такие вещи, как vim и nano :

  c:> bash $: nano yourfile.txt код> 

Если на удаленном компьютере Подсистема Windows для Linux установлена, вы можете ввести bash , чтобы следующие команды интерпретировались WSL. Отсюда вы можете ввести nano FILENAME или vim FILENAME или любой другой текстовый редактор Linux, который вы предпочитаете. Чтобы выйти из WSL и вернуться в обычную командную строку, введите exit или logout .

Это пригодилось, когда я получал доступ сервер Windows Jupyter Notebook и хотел отредактировать .gitattributes , скрытый файл, который не отображается в графическом интерфейсе Jupyter. Этот ответ основан на приведенном выше комментарии SajanGohil.

ответил 26 мая ’20 в 15:57


Если на удаленном компьютере установлена ​​подсистема Windows для Linux, вы можете ввести bash , чтобы получить следующий команды, интерпретируемые WSL. Отсюда вы можете ввести nano FILENAME или vim FILENAME или любой другой текстовый редактор Linux, который вы предпочитаете. Чтобы выйти из WSL и вернуться в обычную командную строку, введите exit или logout .

Это пригодилось, когда я получал доступ сервер Windows Jupyter Notebook и хотел отредактировать .gitattributes , скрытый файл, который не отображается в графическом интерфейсе Jupyter. Этот ответ основан на комментарии SajanGohil выше..


Используйте vim или nano .

Установите vim с помощью choco install vim , используя шоколадный менеджер пакетов.

(Также может быть доступна версия Scoop, но я не проверял.)

Хотя nano также существует как choco , он очень устарел. Вместо этого установите этот файл nano. Однако при использовании через SSH управляющие символы nano немного сбиваются с толку, поэтому вы можете потерять некоторые, поскольку Windows использует собственный API для управления экранными символами, а не POSIX. Поэтому, хотя в настоящее время ведется большая работа по обеспечению совместимости с Win10 в будущем.

Затем вы можете запустить: nano -cg some.txt , но курсор будет отображаются только в нужном месте, когда вы нажимаете CTRL-L . (Вот почему vim предпочтительнее.)

отредактировано 31 мая ’20 в 07:24

ответил 16 мая ’20 в 21:35

  • Конечно, для этого требуется установка Chocolately – mic 26 мая ’20 в 15:38

  • Спасибо, микрофон, я добавил эту ссылку . – not2qubit 31 мая ’20 в 7:25

добавить комментарий |


Используйте vim или nano .

Установите vim с помощью choco install vim , используя шоколадный менеджер пакетов.

(Также может быть доступна версия Scoop, но я не проверял.)

Хотя nano также существует как choco , он очень устарел. Вместо этого установите этот файл nano. Однако при использовании через SSH управляющие символы nano немного сбиваются с толку, поэтому вы можете потерять некоторые, поскольку Windows использует собственный API для управления экранными символами, а не POSIX. Поэтому, хотя в настоящее время ведется большая работа по обеспечению совместимости с Win10 в будущем.

Затем вы можете запустить: nano -cg some.txt , но курсор будет отображаются только в нужном месте, когда вы нажимаете CTRL-L . (Вот почему vim предпочтительнее.)



Изучите командную строку в терминале

https://vimeo.com/237081669

Создание папок – это круто, но папка без содержимого так же полезна, как и пустая коробка!

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

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

Создание файлов

Не -пример кода

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

Как вы понимаете, разные Для курсов потребуются файлы разных типов внутри. Например, на уроке гуманитарных наук, таком как история искусства, может потребоваться конец курсовой работы. Скорее всего, это текстовый файл. 🎨 Может быть, на уроке биологии потребуются исследования и результаты этого семестра! Скорее всего, это электронная таблица. 🐢

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

Это намного быстрее, чем создание файла по отдельности через различные приложения, такие как Microsoft Excel или текстовый редактор, и запустив «Сохранить как».

Давайте сначала поработаем с примером истории искусства. Если вы используете команду cd для перехода в каталог «История искусства», вы можете затем использовать команду под названием touch , чтобы создать файл для нашего конца. курсовой работы.

Touch – команда звучит довольно жутко, но вот что она делает:

  • указывает вашей системе искать определенный файл

  • Если файл еще не существует, ваша система создаст этот файл для вас.

В этом случае давайте создадим файл с именем term-paper.txt .

команда будет выглядеть так:

  touch term-paper.txt  

Это так просто! Теперь, если вы снова посмотрите в Finder, вы увидите, что этот файл был создан внутри вашей папки «История искусства». В настоящее время он пуст, но вы можете открыть его в любое время из Терминала, чтобы редактировать содержимое, как обычно:

  открыть курсовую работу  .txt  

Теперь пора создать второй файл. Этот второй файл будет в папке «Биология». Это означает, что мы должны сменить каталоги на папку Biology!

Вы можете применить на практике смену директорий для перехода на один уровень вверх. Две точки представляют родительский каталог каталога, в котором вы сейчас находитесь, поэтому вы можете cd .. переместиться на один уровень вверх в структуре папок.

  cd ..  

На этом этапе вы вернетесь в каталог «Второй семестр».

Теперь вы можете ввести cd Biology , чтобы перейти в каталог Biology.. Отсюда вы можете написать ту же сенсорную команду с именем файла, который вы хотите создать, и расширением файла.

  touch research-sizes.csv  

Вот как выглядит вся серия команд:

Запустите команду open, чтобы открыть файл

Обратите внимание, что после запуска open research-sizes.csv файл открывается автоматически в Microsoft Excel. Терминал достаточно умен, чтобы знать, какое приложение должно открывать файлы какого типа. 👍

Файл открывается в правильном приложении автоматически!
Пример кода

В предыдущей главе вы видели, как создать базовую структуру папок для статического веб-сайта. Была папка CSS и папка для изображений.

Однако обе они пусты. Давайте добавим файл!

Попав в каталог project , вы создадите пустой HTML-файл . Этот файл обычно является основной страницей любого базового проекта кода. HTML-файлы – это то место, где будет находиться структура веб-страницы , и где вы определяете абзацы или заголовки, где вы хотите использовать элементы, такие как панели навигации, или как текст должен быть отформатирован.

Выполните коснитесь плюс имя файла – index.html – для его создания:

  touch index.html  

Теперь, набрав ls , вы можете увидеть, что проект содержит папку CSS, папку для изображений, и файл с именем index.html . Мы вернемся к этому файлу через секунду.

Создание файла index.html

Давайте cd в каталог css и создадим здесь другой файл. Этот новый файл будет иметь другое расширение, чем другие, которые мы создали до сих пор: это не будет .txt или .csv. ни .html. Это будет .css, потому что он будет содержать код CSS!

  cd css  
  touch main.css   

Я даже могу открыть HTML-файл в моем браузере, чтобы просмотреть содержимое моего файла:

  open index.html  

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

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

В следующей главе вы увидите, как перемещать и копировать часть этого контента вы создали.

  • #

Полный
список команд вы можете посмотреть,
набрав в командной строке help.

Очистка
экрана монитора

cls
В
результате ее выполнения экран монитора
очищается.

Установка
даты в компьютере

date
[текущая
дата]

Если
вводится команда без параметров, то
выводится текущая системная дата и
делается запрос на ввод новой даты:
Enter
new date (mm-dd-yy):

Чтобы
этот запрос не выводился, необходимо
вывести команду date
с
параметром /t.

Установка
времени в компьютере

time
[часы:минуты]

Если
вводится команда без параметров, то
выводится текущее время и делается
запрос на ввод нового значения времени:
Enter
new
time
:

Вывод
номера версии DOS — ver

Вывод
информации об оперативной памяти —
mem

Изменение
вида приглашения
DOS

prompt
<
текст
приглашения
>

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

prompt
$_ВРЕМЯ $t$_Сегодня $d$_Вы используете
$v$_Путь $p$q

В
результате подсказка будет выглядеть
следующим образом:

ВРЕМЯ
10:22:57,76

Сегодня
01.03.2014

Вы
используете Microsoft Windows XP [Версия 5.1.2600]

Путь
C:Documents and SettingsAdmin_d.SSU-312FA-5=

Переход
на другой диск

Смена
текущего диска осуществляется путем
ввода в командной строке имени того
диска, на который вы хотите перейти, с
двоеточием (H:).
При этом в командной строке должно
измениться системное приглашение.

Копирование
файл
ов

copy
[устройство]
[путь] имя файла-источника [устройство]
[путь] имя файла-копии

При
успешном выполнении копирования на
экране должно появиться сообщение «1
file(s) copied» (1 файл скопирован).

Примеры:

copy
proba.doc A:AAAproba1.doc – скопировать из текущего
каталога файл proba.doc в подкаталог ААА
диска А c новым именем proba1.doc,

copy
A:AAAlaba.pas D:TPBIN – скопировать с диска А
из каталога ААА файл laba.pas на диск D в
подкаталог BIN каталога TP c тем же именем.

Для
копирования группы файлов используется
подстановочный символ *. Он замещает
собой один или несколько символов в
имени файла.

Примеры:

Copy
*.doc
A:AAA
– скопировать из текущего каталога все
файлы с расширением .doc
в подкаталог ААА диска А без изменения
их имени.

Copy
A:AAAlaba*.*
D:MAIN
– скопировать с диска А из каталога ААА
все файлы, имя которых начинается laba,
с любым расширением, на диск D в каталог
MAIN c теми же именами.

Copy
a:my.?
скопирует с дискеты все файлы с именем
my
и с расширением, состоящим из одного
символа, а также все файлы с именем my,
не имеющими расширения.

С
помощью команды copy
можно
осуществить слияние файлов. Следующая
команда объединит содержимое файлов
f1.txt
и
f2.txt
в
один файл f3.txt:
Copy f1.txt+f2.txt f3.txt

Копирование
на устройство prn
позволяет распечатать текстовый файл.
Например, по команде «copy laba.pas prn»
на принтер будет выведен текст
Pascal-программы.

Создание
текстового файла

copy
con [устройство] [путь] имя_файла

Данная
команда копирует текст, набранный на
экране в файл. В конце набора текста
следует нажать клавишу F6 или Ctrl+Z и Enter.
После этого на экране должно появиться
сообщение «1 file(s) copied» (1 файл
скопирован).

Пример:
copy con proba.txt – создается файл proba.txt в
текущем каталоге.

Просмотр
текстового файла

type
[устройство] [путь] имя_файла

По
данной команде содержание текстового
файла выводится на экран. Можно только
просмотреть содержание файла, изменить
нельзя.

Пример:
type A:AAAproba.txt – текст файла proba.txt,
находящегося на диске А в каталоге ААА,
будет выведен на экран.

Редактирование
текстового файла

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

edit

[устройство] [путь] имя_файла

Информацию
о работе с текстовым редактором можно
получить с помощью вызова его справки.

Переименование
файлов

ren
[устройство] [путь] имя старое_имя
новое_имя

Примеры:
ren proba.doc proba1.doc – переименовать файл
proba.doc в текущем каталоге в файл с именем
proba1.doc,

ren
A:AAAlaba*.pas laba*.txt – переименовать на диске
А в каталоге ААА файлы, имя которых
начинается laba, с расширением .pas, в файлы
того же каталога c теми же именами, но с
расширением .txt.

Удаление
файлов

del
[устройство] [путь] имя_файла

Примеры:
del proba.doc– удалить файл proba.doc в текущем
каталоге,

del
A:AAA*.pas – удалить на диске А в каталоге
ААА файлы с расширением .pas.

Просмотр
содержимого каталога

dir
[устройство] [путь] [имя файла] [ключи]

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

dir/p
– для постраничного вывода списка,

dir/w
– для вывода списка в несколько колонок,
но при этом будут выведены только имена
файлов без их размера и даты и времени
их создания.

Примеры:
dir – просмотр текущего каталога,

dir
A: – просмотр корневого каталога дискеты
А,

dir
C:DOS/p – постраничный просмотр подкаталога
DOS диска С.

Смена
каталога

сd
[устройство]
[путь] [имя каталога]

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

каталог используют команду cd
,
для перехода в каталог на
уровень выше

cd
..
..

Пример:
cd nc – перейти в подкаталог NC.

Вывод
сообщения на экран

Echo
[сообщение]

Создание
каталога

md
[устройство] [путь] имя каталога

Подкаталог
может быть создан в любом существующем
каталоге.

Примеры:
md proba – создать в текущем каталоге
подкаталог PROBA

md
A:AAAPAS – создать на диске А в каталоге
ААА подкаталог PAS.

Удаление
каталога

rd
[устройство] [путь] имя каталога

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

Примеры:
rd proba – удалить в текущем каталоге
подкаталог PROBA

rd
A:AAAPAS – удалить на диске А в каталоге
ААА подкаталог PAS.

Команда
установки списка каталогов для поиска
выполняемых файлов

Формат:
Path
имя[;имя]

Например,
команда

Path
C:DOS;
C:student

задает
маршруты поиска программ в каталогах
первого уровня DOS
и
Student,
зарегистрированных
в корневом каталоге C:.

Команды
фильтрации

Команды
фильтрации — это команды, которые читают
данные из стандартного устройства
ввода, что-то делают с данными, а затем
направляют их к стандартному устройству
вывода.

sort

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

Примеры:

sort
< data1 > data2 —
считает данные из файла data1,
отсортирует
их в алфавитном порядке и запишет в файл
data2.

Dir
| sort >> mydir.txt – оглавление
текущего каталога сортируется в порядке
возрастания и записывается в конец
файла mydir.txt.

More

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

Find

используется для обнаружения строк,
которые содержат или не содержат
некоторые конкретно заданные данные.
Например, чтобы выделить ту строку в
выходные данные команды date,
которая
содержит информацию о текущей дате,
следует пропустить входные данные
команды date
через
фильтр find
и
выделить строку, содержащую 20:

date
< enter.txt | find “20”

Лабораторная
работа № 1.А

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

Вариант
1

1.
Создать в корневом каталоге Вашего
пользовательского раздела диска каталог
Glava1, а в нем – подкаталоги Glava2 и
Glava3. В подкаталоге Glava3 создать текстовый
файл myname.txt, содержащий три строчки по
образцу:

Фамилия
Имя Отчество

Факультет
Курс Номер группы

Часы
Минуты День Месяц Год

2.
Скопировать файл myname.txt в подкаталог
Glava2 под этим же именем и в подкаталог
Glava3 под именем fio.txt.

3.
Переименовать файл в подкаталоге Glava2
в myname1.txt.

4.
Отредактировать файл fio.txt так, чтобы
он содержал информацию на изучаемом
Вами иностранном языке, а имя и отчество
были бы сокращены до инициалов.

5.
Объединить содержимое файлов myname1.txt и
fio.txt в файл result.txt, который должен
располагаться в каталоге Glava1.

6.
Удалить с диска каталог Glava2.

7.
Изучить справочную информацию о команде
dir.

8.
Используя средства перенаправления
ввода-вывода в команде dir
создать
в каталоге Glava1
файл
myinfo.txt,
в
котором должна содержаться информация
о содержимом каталога Glava1
и
его подкаталогов.

9.
Переместить на «флешку»/внешний
накопитель каталог Glava3, а затем
скопировать на нее каталог Glava1 вместе
со всем его содержимым.

10.
Все созданные Вами файлы с расширением
.txt
скопировать
в корневой каталог «флешки» с теми же
именами, но с расширениями .ttt.

Вариант
2

1.
Создать в корневом каталоге Вашего
пользовательского диска каталог Kniga, в
нем – подкаталог Glava, а в каталоге Glava –
подкаталог Itog. В каталоге Kniga создать
текстовый файл myinfo.txt, содержащий три
строчки по образцу:

Фамилия
Имя Отчество

Факультет
Курс Номер группы

Часы
Минуты День Месяц Год

2.
Скопировать файл myinfo.txt в подкаталог
Itog под этим же именем и в подкаталог
Glava под именем primer.txt

3.
Переименовать файл в подкаталоге Itog в
text.txt

4.
Отредактировать файл myinfo.txt так, чтобы
он содержал информацию как на русском,
так и на изучаемом Вами иностранном
языке.

5.
Объединить содержимое файлов myinfo.txt
и text.txt в файл itog.txt, который должен
располагаться в каталоге Glava.

6.
Изучить справочную информацию о команде
dir.

7.
Используя средства перенаправления
ввода-вывода создать в каталоге Glava
файл
mykniga.txt,
в
котором должна содержаться информация
о содержимом каталога Glava,
отсортированная
в порядке возрастания размера файлов.

8.
Переместить на «флешку»/внешний
накопитель каталог Itog, а затем
скопировать на нее каталог Glava
вместе со всем его содержимым.

9.
Удалить с диска каталог Kniga.

10.
Все созданные Вами файлы с расширением
.lex
скопировать
в корневой каталог «флешки» с теми же
именами, но с расширениями .txt.

Командные
файлы

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

(или хотя бы одна команда). Пример
командного файла:

help
copy > copy.help

help
move > move.help

md
msdos-help

move
*.help msdos-help

Командные
файлы имеют расширение bat. По нему файлы
этого типа опознаются командным
процессором. Этот файл можно назвать,
например, make-help.bat.

Для
того чтобы запустить командный файл,
введите его имя в качестве команды.
После этого командный файл будет
выполнен.

В
командном файле каждая команда занимает
одну строку. Точнее, существует способ
расположить одну команду на нескольких
подряд идущих строках, для этого
непосредственно перед каждым переводом
строки следует поставить символ «крышка»
^. (Необходимо, чтобы каждая «крышка»
была последним символом в своей строке;
после нее не должно быть пробелов и
табуляций). Пример:

if
exist Z:test.txt ^

copy
test.txt ^

Z:test

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

Не
путайте текущий каталог с каталогом, в
котором находится запускаемый командный
файл. Предположим, текущим каталогом
является work, в нем находится каталог
tools, а в каталоге tools хранятся командные
файлы. Вы запускаете один из них командой
toolscollect-images.bat. Так вот, «с точки зрения»
этого командного файла, текущим каталогом
все равно окажется work, а не tools.

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

Комментирование
командного файла и его выдачи.

Команды
echo и rem

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

Для
оформления комментариев предусмотрена
команда rem. Это фиктивная команда, которая
не предполагает выполнения каких бы то
ни было действий, но позволяет написать
в строке после своего имени произвольный
текст. Причем командный процессор не
воспринимает его как синтаксическую
ошибку.

Пример:

rem
*****************************************************

rem
Формирование файлов справки по командам
copy и move

rem
*****************************************************

rem
Формируем файлы справки

help
copy > copy.help

help
move > move.help

rem
Создаем каталог для хранения файлов
справки

md
msdos-help

rem
Перемещаем файлы справки в подготовленный
каталог

move
*.help msdos-help

При
выполнении приведенного выше командного
файла все команды будут выводиться на
экран по мере их выполнения, что не
всегда удобно. Выдачу команд можно
отключить с помощью команды @echo off. Символ
«собака» перед командой echo означает,
что и сама эта команда должна выполняться
в «молчаливом» режиме. С таким же успехом
мы могли бы не пользоваться командной
echo off, а поместить «собаку» перед каждой
командой.

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

@echo
off

rem
*****************************************************

rem
Формирование файлов справки по командам
copy и move

rem
*****************************************************

@echo
Формируем файлы справки. Одну секундочку…

rem
Формируем файлы справки

help
copy
> copy.help

help
move
> move.help

rem
Создаем каталог для хранения файлов
справки

md
msdos-help

rem
Перемещаем файлы справки в подготовленный
каталог

move
*.help msdos-help

echo
Готово!

Передача
командному файлу параметров

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

Для
решения этой задачи предусмотрен
механизм обработки параметров. Работает
он довольно просто. Если при запуске
командного файла пользователь указал
несколько параметров после имени файла,
то в тексте командного файла первый из
них мы обозначаем записью %1, второй
записью %2, третий записью %3 и т.д. Всего
может быть использовано не более 9
параметров.

Текст
командного файла, решающего поставленную
задачу, приведен ниже. Обратите внимание
на команду help. В качестве ее параметра
ей передается первый параметр командного
файла.

@echo
off

rem
Формируем файл с описанием команды,

rem
имя которой передано параметром

help
%1 > help.tmp

rem
Загружаем файл описания в редактор
Блокнот

notepad
help.tmp

Предположим,
что мы присвоили этому командному файлу
имя show-help.bat. Для того чтобы загрузить в
блокнот описание команды, например,
dir, мы должны ввести команду следующим
образом: show-help.bat
dir

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

rem
Пример командного файла с двумя
параметрами

rem
Создаем каталог с именем, заданным
первым параметром

md
%1

rem
Создаем в нем файл с описанием команды,

rem
заданной вторым параметром

help
%2 > %1%2.help

Что
произойдет, если пользователь при
запуске этого командного файла укажет
не два, а четыре параметра? Ничего
страшного, они ничему не помешают, просто
не будут использованы. А что будет, если
пользователь укажет только первый
параметр? Второй параметр окажется
пустым. Эффект получится такой: командный
файл будет выполнен, но так, как будто
на месте записи %2 ничего нет. Команда
help сформирует список всех команд и
поместит его в файл с пустым именем и
расширением.help. Если же пользователь
запустить этот файл, не указав ни одного
параметра, то при попытке командного
процессора выполнить команду md
(предназначена для создания каталога),
будет выдано сообщение о синтаксической
ошибке, поскольку у команды md обязательно
должен быть параметр.

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

Соседние файлы в папке 2курсИБ(ОС)

  • #
  • #

    07.06.201560.64 Кб14lab3 (1).odt

  • #
  • #
  • #
  • #

Note — Be sure to see the update at the end of this answer for a link to the superior JREPL.BAT that supersedes REPL.BAT
JREPL.BAT 7.0 and above natively supports unicode (UTF-16LE) via the /UTF option, as well as any other character set, including UTF-8, via ADO!!!!


I have written a small hybrid JScript/batch utility called REPL.BAT that is very convenient for modifying ASCII (or extended ASCII) files via the command line or a batch file. The purely native script does not require installation of any 3rd party executeable, and it works on any modern Windows version from XP onward. It is also very fast, especially when compared to pure batch solutions.

REPL.BAT simply reads stdin, performs a JScript regex search and replace, and writes the result to stdout.

Here is a trivial example of how to replace foo with bar in test.txt, assuming REPL.BAT is in your current folder, or better yet, somewhere within your PATH:

type test.txt|repl "foo" "bar" >test.txt.new
move /y test.txt.new test.txt

The JScript regex capabilities make it very powerful, especially the ability of the replacement text to reference captured substrings from the search text.

I’ve included a number of options in the utility that make it quite powerful. For example, combining the M and X options enable modification of binary files! The M Multi-line option allows searches across multiple lines. The X eXtended substitution pattern option provides escape sequences that enable inclusion of any binary value in the replacement text.

The entire utility could have been written as pure JScript, but the hybrid batch file eliminates the need to explicitly specify CSCRIPT every time you want to use the utility.

Here is the REPL.BAT script. Full documentation is embedded within the script.

@if (@X)==(@Y) @end /* Harmless hybrid line that begins a JScript comment

::************ Documentation ***********
::REPL.BAT version 6.2
:::
:::REPL  Search  Replace  [Options  [SourceVar]]
:::REPL  /?[REGEX|REPLACE]
:::REPL  /V
:::
:::  Performs a global regular expression search and replace operation on
:::  each line of input from stdin and prints the result to stdout.
:::
:::  Each parameter may be optionally enclosed by double quotes. The double
:::  quotes are not considered part of the argument. The quotes are required
:::  if the parameter contains a batch token delimiter like space, tab, comma,
:::  semicolon. The quotes should also be used if the argument contains a
:::  batch special character like &, |, etc. so that the special character
:::  does not need to be escaped with ^.
:::
:::  If called with a single argument of /?, then prints help documentation
:::  to stdout. If a single argument of /?REGEX, then opens up Microsoft's
:::  JScript regular expression documentation within your browser. If a single
:::  argument of /?REPLACE, then opens up Microsoft's JScript REPLACE
:::  documentation within your browser.
:::
:::  If called with a single argument of /V, case insensitive, then prints
:::  the version of REPL.BAT.
:::
:::  Search  - By default, this is a case sensitive JScript (ECMA) regular
:::            expression expressed as a string.
:::
:::            JScript regex syntax documentation is available at
:::            http://msdn.microsoft.com/en-us/library/ae5bf541(v=vs.80).aspx
:::
:::  Replace - By default, this is the string to be used as a replacement for
:::            each found search expression. Full support is provided for
:::            substituion patterns available to the JScript replace method.
:::
:::            For example, $& represents the portion of the source that matched
:::            the entire search pattern, $1 represents the first captured
:::            submatch, $2 the second captured submatch, etc. A $ literal
:::            can be escaped as $$.
:::
:::            An empty replacement string must be represented as "".
:::
:::            Replace substitution pattern syntax is fully documented at
:::            http://msdn.microsoft.com/en-US/library/efy6s3e6(v=vs.80).aspx
:::
:::  Options - An optional string of characters used to alter the behavior
:::            of REPL. The option characters are case insensitive, and may
:::            appear in any order.
:::
:::            A - Only print altered lines. Unaltered lines are discarded.
:::                If the S options is present, then prints the result only if
:::                there was a change anywhere in the string. The A option is
:::                incompatible with the M option unless the S option is present.
:::
:::            B - The Search must match the beginning of a line.
:::                Mostly used with literal searches.
:::
:::            E - The Search must match the end of a line.
:::                Mostly used with literal searches.
:::
:::            I - Makes the search case-insensitive.
:::
:::            J - The Replace argument represents a JScript expression.
:::                The expression may access an array like arguments object
:::                named $. However, $ is not a true array object.
:::
:::                The $.length property contains the total number of arguments
:::                available. The $.length value is equal to n+3, where n is the
:::                number of capturing left parentheses within the Search string.
:::
:::                $[0] is the substring that matched the Search,
:::                $[1] through $[n] are the captured submatch strings,
:::                $[n+1] is the offset where the match occurred, and
:::                $[n+2] is the original source string.
:::
:::                Arguments $[0] through $[10] may be abbreviated as
:::                $1 through $10. Argument $[11] and above must use the square
:::                bracket notation.
:::
:::            L - The Search is treated as a string literal instead of a
:::                regular expression. Also, all $ found in the Replace string
:::                are treated as $ literals.
:::
:::            M - Multi-line mode. The entire contents of stdin is read and
:::                processed in one pass instead of line by line, thus enabling
:::                search for n. This also enables preservation of the original
:::                line terminators. If the M option is not present, then every
:::                printed line is terminated with carriage return and line feed.
:::                The M option is incompatible with the A option unless the S
:::                option is also present.
:::
:::                Note: If working with binary data containing NULL bytes,
:::                      then the M option must be used.
:::
:::            S - The source is read from an environment variable instead of
:::                from stdin. The name of the source environment variable is
:::                specified in the next argument after the option string. Without
:::                the M option, ^ anchors the beginning of the string, and $ the
:::                end of the string. With the M option, ^ anchors the beginning
:::                of a line, and $ the end of a line.
:::
:::            V - Search and Replace represent the name of environment
:::                variables that contain the respective values. An undefined
:::                variable is treated as an empty string.
:::
:::            X - Enables extended substitution pattern syntax with support
:::                for the following escape sequences within the Replace string:
:::
:::                \     -  Backslash
:::                b     -  Backspace
:::                f     -  Formfeed
:::                n     -  Newline
:::                q     -  Quote
:::                r     -  Carriage Return
:::                t     -  Horizontal Tab
:::                v     -  Vertical Tab
:::                xnn   -  Extended ASCII byte code expressed as 2 hex digits
:::                unnnn -  Unicode character expressed as 4 hex digits
:::
:::                Also enables the q escape sequence for the Search string.
:::                The other escape sequences are already standard for a regular
:::                expression Search string.
:::
:::                Also modifies the behavior of xnn in the Search string to work
:::                properly with extended ASCII byte codes.
:::
:::                Extended escape sequences are supported even when the L option
:::                is used. Both Search and Replace support all of the extended
:::                escape sequences if both the X and L opions are combined.
:::
:::  Return Codes:  0 = At least one change was made
:::                     or the /? or /V option was used
:::
:::                 1 = No change was made
:::
:::                 2 = Invalid call syntax or incompatible options
:::
:::                 3 = JScript runtime error, typically due to invalid regex
:::
::: REPL.BAT was written by Dave Benham, with assistance from DosTips user Aacini
::: to get xnn to work properly with extended ASCII byte codes. Also assistance
::: from DosTips user penpen diagnosing issues reading NULL bytes, along with a
::: workaround. REPL.BAT was originally posted at:
::: http://www.dostips.com/forum/viewtopic.php?f=3&t=3855
:::

::************ Batch portion ***********
@echo off
if .%2 equ . (
  if "%~1" equ "/?" (
    <"%~f0" cscript //E:JScript //nologo "%~f0" "^:::" "" a
    exit /b 0
  ) else if /i "%~1" equ "/?regex" (
    explorer "http://msdn.microsoft.com/en-us/library/ae5bf541(v=vs.80).aspx"
    exit /b 0
  ) else if /i "%~1" equ "/?replace" (
    explorer "http://msdn.microsoft.com/en-US/library/efy6s3e6(v=vs.80).aspx"
    exit /b 0
  ) else if /i "%~1" equ "/V" (
    <"%~f0" cscript //E:JScript //nologo "%~f0" "^::(REPL.BAT version)" "$1" a
    exit /b 0
  ) else (
    call :err "Insufficient arguments"
    exit /b 2
  )
)
echo(%~3|findstr /i "[^SMILEBVXAJ]" >nul && (
  call :err "Invalid option(s)"
  exit /b 2
)
echo(%~3|findstr /i "M"|findstr /i "A"|findstr /vi "S" >nul && (
  call :err "Incompatible options"
  exit /b 2
)
cscript //E:JScript //nologo "%~f0" %*
exit /b %errorlevel%

:err
>&2 echo ERROR: %~1. Use REPL /? to get help.
exit /b

************* JScript portion **********/
var rtn=1;
try {
  var env=WScript.CreateObject("WScript.Shell").Environment("Process");
  var args=WScript.Arguments;
  var search=args.Item(0);
  var replace=args.Item(1);
  var options="g";
  if (args.length>2) options+=args.Item(2).toLowerCase();
  var multi=(options.indexOf("m")>=0);
  var alterations=(options.indexOf("a")>=0);
  if (alterations) options=options.replace(/a/g,"");
  var srcVar=(options.indexOf("s")>=0);
  if (srcVar) options=options.replace(/s/g,"");
  var jexpr=(options.indexOf("j")>=0);
  if (jexpr) options=options.replace(/j/g,"");
  if (options.indexOf("v")>=0) {
    options=options.replace(/v/g,"");
    search=env(search);
    replace=env(replace);
  }
  if (options.indexOf("x")>=0) {
    options=options.replace(/x/g,"");
    if (!jexpr) {
      replace=replace.replace(/\\/g,"\B");
      replace=replace.replace(/\q/g,""");
      replace=replace.replace(/\x80/g,"\u20AC");
      replace=replace.replace(/\x82/g,"\u201A");
      replace=replace.replace(/\x83/g,"\u0192");
      replace=replace.replace(/\x84/g,"\u201E");
      replace=replace.replace(/\x85/g,"\u2026");
      replace=replace.replace(/\x86/g,"\u2020");
      replace=replace.replace(/\x87/g,"\u2021");
      replace=replace.replace(/\x88/g,"\u02C6");
      replace=replace.replace(/\x89/g,"\u2030");
      replace=replace.replace(/\x8[aA]/g,"\u0160");
      replace=replace.replace(/\x8[bB]/g,"\u2039");
      replace=replace.replace(/\x8[cC]/g,"\u0152");
      replace=replace.replace(/\x8[eE]/g,"\u017D");
      replace=replace.replace(/\x91/g,"\u2018");
      replace=replace.replace(/\x92/g,"\u2019");
      replace=replace.replace(/\x93/g,"\u201C");
      replace=replace.replace(/\x94/g,"\u201D");
      replace=replace.replace(/\x95/g,"\u2022");
      replace=replace.replace(/\x96/g,"\u2013");
      replace=replace.replace(/\x97/g,"\u2014");
      replace=replace.replace(/\x98/g,"\u02DC");
      replace=replace.replace(/\x99/g,"\u2122");
      replace=replace.replace(/\x9[aA]/g,"\u0161");
      replace=replace.replace(/\x9[bB]/g,"\u203A");
      replace=replace.replace(/\x9[cC]/g,"\u0153");
      replace=replace.replace(/\x9[dD]/g,"\u009D");
      replace=replace.replace(/\x9[eE]/g,"\u017E");
      replace=replace.replace(/\x9[fF]/g,"\u0178");
      replace=replace.replace(/\b/g,"b");
      replace=replace.replace(/\f/g,"f");
      replace=replace.replace(/\n/g,"n");
      replace=replace.replace(/\r/g,"r");
      replace=replace.replace(/\t/g,"t");
      replace=replace.replace(/\v/g,"v");
      replace=replace.replace(/\x[0-9a-fA-F]{2}|\u[0-9a-fA-F]{4}/g,
        function($0,$1,$2){
          return String.fromCharCode(parseInt("0x"+$0.substring(2)));
        }
      );
      replace=replace.replace(/\B/g,"\");
    }
    search=search.replace(/\\/g,"\B");
    search=search.replace(/\q/g,""");
    search=search.replace(/\x80/g,"\u20AC");
    search=search.replace(/\x82/g,"\u201A");
    search=search.replace(/\x83/g,"\u0192");
    search=search.replace(/\x84/g,"\u201E");
    search=search.replace(/\x85/g,"\u2026");
    search=search.replace(/\x86/g,"\u2020");
    search=search.replace(/\x87/g,"\u2021");
    search=search.replace(/\x88/g,"\u02C6");
    search=search.replace(/\x89/g,"\u2030");
    search=search.replace(/\x8[aA]/g,"\u0160");
    search=search.replace(/\x8[bB]/g,"\u2039");
    search=search.replace(/\x8[cC]/g,"\u0152");
    search=search.replace(/\x8[eE]/g,"\u017D");
    search=search.replace(/\x91/g,"\u2018");
    search=search.replace(/\x92/g,"\u2019");
    search=search.replace(/\x93/g,"\u201C");
    search=search.replace(/\x94/g,"\u201D");
    search=search.replace(/\x95/g,"\u2022");
    search=search.replace(/\x96/g,"\u2013");
    search=search.replace(/\x97/g,"\u2014");
    search=search.replace(/\x98/g,"\u02DC");
    search=search.replace(/\x99/g,"\u2122");
    search=search.replace(/\x9[aA]/g,"\u0161");
    search=search.replace(/\x9[bB]/g,"\u203A");
    search=search.replace(/\x9[cC]/g,"\u0153");
    search=search.replace(/\x9[dD]/g,"\u009D");
    search=search.replace(/\x9[eE]/g,"\u017E");
    search=search.replace(/\x9[fF]/g,"\u0178");
    if (options.indexOf("l")>=0) {
      search=search.replace(/\b/g,"b");
      search=search.replace(/\f/g,"f");
      search=search.replace(/\n/g,"n");
      search=search.replace(/\r/g,"r");
      search=search.replace(/\t/g,"t");
      search=search.replace(/\v/g,"v");
      search=search.replace(/\x[0-9a-fA-F]{2}|\u[0-9a-fA-F]{4}/g,
        function($0,$1,$2){
          return String.fromCharCode(parseInt("0x"+$0.substring(2)));
        }
      );
      search=search.replace(/\B/g,"\");
    } else search=search.replace(/\B/g,"\\");
  }
  if (options.indexOf("l")>=0) {
    options=options.replace(/l/g,"");
    search=search.replace(/([.^$*+?()[{\|])/g,"\$1");
    if (!jexpr) replace=replace.replace(/$/g,"$$$$");
  }
  if (options.indexOf("b")>=0) {
    options=options.replace(/b/g,"");
    search="^"+search
  }
  if (options.indexOf("e")>=0) {
    options=options.replace(/e/g,"");
    search=search+"$"
  }
  var search=new RegExp(search,options);
  var str1, str2;

  if (srcVar) {
    str1=env(args.Item(3));
    str2=str1.replace(search,jexpr?replFunc:replace);
    if (!alterations || str1!=str2) if (multi) {
      WScript.Stdout.Write(str2);
    } else {
      WScript.Stdout.WriteLine(str2);
    }
    if (str1!=str2) rtn=0;
  } else if (multi){
    var buf=1024;
    str1="";
    while (!WScript.StdIn.AtEndOfStream) {
      str1+=WScript.StdIn.Read(buf);
      buf*=2
    }
    str2=str1.replace(search,jexpr?replFunc:replace);
    WScript.Stdout.Write(str2);
    if (str1!=str2) rtn=0;
  } else {
    while (!WScript.StdIn.AtEndOfStream) {
      str1=WScript.StdIn.ReadLine();
      str2=str1.replace(search,jexpr?replFunc:replace);
      if (!alterations || str1!=str2) WScript.Stdout.WriteLine(str2);
      if (str1!=str2) rtn=0;
    }
  }
} catch(e) {
  WScript.Stderr.WriteLine("JScript runtime error: "+e.message);
  rtn=3;
}
WScript.Quit(rtn);

function replFunc($0, $1, $2, $3, $4, $5, $6, $7, $8, $9, $10) {
  var $=arguments;
  return(eval(replace));
}

IMPORTANT UPDATE

I have ceased development of REPL.BAT, and replaced it with JREPL.BAT. This newer utility has all the same functionality of REPL.BAT, plus much more:

  • Unicode UTF-16LE support via native CSCRIPT unicode capabilities, and any other character set (including UTF-8) via ADO.
  • Read directly from / write directly to a file: no need for pipes, redirection, or move command.
  • Incorporate user supplied JScript
  • Translation facility similar to unix tr, only it also supports regex search and JScript replace
  • Discard non-matching text
  • Prefix output lines with line number
  • and more…

As always, full documentation is embedded within the script.

The original trivial solution is now even simpler:

jrepl "foo" "bar" /f test.txt /o -

The current version of JREPL.BAT is available at DosTips. Read all of the subsequent posts in the thread to see examples of usage and a history of the development.

Создание и чтение текстовых файлов в командной строкеЕсли вы оказались без доступа к чему-либо кроме командной строки или Windows PowerShell и по какой-то причине вам требуется возможность создания или чтения текстовых файлов, это вполне реализуемо, причем более чем одним методом.

В этой инструкции подробно о работе с текстовыми файлами в командной строки или PowerShell (разумеется, можно и в Терминале Windows) — создание и сохранение текстовых файлов, их вывод и чтение в консоли.

Создание текстовых файлов в командной строке

Возможность создания текстовых файлов доступна как в командной строке (cmd.exe), так и в PowerShell. Начнем с первого варианта.

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

Команда ECHO

Команда командной строки echo предназначена для вывода текстовых сообщений в окне консоли, например, при выполнении сценария в bat-файле, но может быть использована и для вывода текста в файл, благодаря возможности использования оператора «>» для перенаправления вывода из консоли в файл.

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

echo Содержимое текстового файла > file.txt

В результате её выполнения в текущей рабочей папке командной строки будет создан файл с именем file.txt и содержимым «Содержимое текстового файла».

Создание текстового файла с помощью команды echo

COPY CON

Команда copy с параметром con позволяет скопировать содержимое консоли в файл. Использование возможности будет состоять из следующих шагов:

  1. Введите команду
    copy con имя_файла.txt

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

  2. Курсор переместится на строчку ниже, и вы сможете набирать текст так, как делаете это обычно, включая перенос строки. Создание текстового файла с помощью copy con
  3. Для завершения набора и сохранения текстового файла нажмите сочетание клавиш Ctrl+Z, а затем — Enter. Это добавит отметку конца файла и сохранит его в текущей папке с указанным на 1-м шаге именем. Сохранение текстового файла с помощью copy con

Создание текстового файла в PowerShell

PowerShell также имеет набор встроенных командлетов для сохранения текстовых данных в файл.

Out-File

Использование Out-File в PowerShell по своей функциональности сходно с оператором перенаправления вывода в командной строке. Вывод консоли перенаправляется в заданный файл.

Пример использования:

"Текстовая строка" | Out-File -FilePath .file.txt

В этом примере в текущей папке PowerShell будет создан файл с именем file.txt и содержимым «Текстовая строка».

New-Item

Создание нового текстового файла в PowerShell возможно с помощью командлета New-Item. Пример команды, в которой создается текстовый файл file.txt, содержащий «Текстовая строка» в текущем расположении:

New-Item -Path . -Name "file.txt" -ItemType "file" -Value "Текстовая строка"

Создание текстового файла с помощью New-Item в PowerShell

Set-Content и Add-Content

Ещё два командлета PowerShell для работы с текстовыми файлами:

  • Set-Content — перезаписывает содержимое файла
  • Add-Content — добавляет содержимое в конце выбранного файла

Их использование можно увидеть на примере следующей команды:

Add-Content -Path .file.txt -Value "Ещё одна текстовая строка"

Добавление текста к файлу в PowerShell

Вывод (чтение) текстового файла в командной строке и PowerShell

Теперь перейдем к способам просмотреть текстовые файлы в командной строке или PowerShell. Как и в предыдущем случае, учитывайте, что для файлов, содержащих кириллицу, возможны проблемы с отображением символов в правильной кодировке.

TYPE

Самый простой вариант — использование команды TYPE с указанием пути к файлу, который нужно отобразить в консоли, например:

type file.txt

Вывод текстового файла с помощью команды type

MORE

Если файл объемный и содержит большое количество строк, используйте команду more, например:

more file.txt

Выполнив команду, вы увидите часть содержимого текста, которая помещается в окне консоли, далее вы можете использовать следующие клавиши:

Вывод текстового файла с помощью команды more

  • Enter — для отображения следующей строки файла.
  • Пробел — для отображения следующих строк документа, которые поместятся в активное окно консоли.
  • P — Показать следующие N строк. После нажатия этой клавиши с последующим указанием количества строк, будет выведено соответствующее количество строк текстового документа.
  • S — пропустить следующие N строк, работает аналогично предыдущему варианту.
  • Клавиша «=» — для отображения текущего номера строки.
  • Q — для прекращения выполнения команды more.

Get-Content

Вывести содержимое текстового файла в PowerShell можно с помощью Get-Content с указанием пути к файлу, например:

Get-Content file.txt

Чтение текстового файла с помощью Get-Content в PowerShell

Также вы можете выводить определенные строки файла, с помощью команд вида (вывод первых или последних 10 строк соответственно):

Get-Content file.txt | Select-Object -First 10
Get-Content file.txt | Select-Object -Last 10

Или присвоить содержимое файла переменной и вывести конкретную строку:

$file_text = Get-Content file.txt
$file_text[2]

Текстовый редактор edit.com в Windows

Помимо использования ручного ввода команд, вы можете использовать консольные текстовые редакторы — сторонние в версиях для Windows, такие как Vim, Nano, Kinesics Text Editor или даже старый встроенный edit.com (может отсутствовать в вашей версии системы и требовать патча NTVDMx64).

Like this post? Please share to your friends:
  • Редактор групповых политик windows server 2012 r2
  • Редактор реестра windows 10 на английском
  • Редактирование текста в командной строке windows
  • Редактор групповых политик windows server 2003
  • Редактор реестра windows 10 как сбросить