БлогNot. Одной строкой в консоли Windows: проблемы и решения

Одной строкой в консоли Windows: проблемы и решения

У меня нет отдельной заметки по полезным консольным командам масдайки (этот старый список едва ли в счёт), так как большинство решений очень просты и хорошо задокументированы. Неожиданно дважды за неделю обнаружив, что человек долго бьётся с простыми вещами, решил такую заметку завести на случай, если ещё всплывёт подобное.

Чаще всего нет смысла лезть в голую консоль (Win+R, cmd, Enter), а достаточно владения нормальным двухпанельным файл-менеджером, таким как Far, но даже в Far есть не всё, и обычно выбор - читать бред нейросети, отчего-то усиливающийся в таких вопросах, или долго искать плагин, или знать, зачем нужна строчка консоли под панелями файл-менеджера. :)

1. Проблема: есть папка, в ней ещё куча папок. Нужно скопировать файлы по маске (например, *.html) в другой источник так, чтобы сохранились относительные пути к ним (то есть, 1\index.html и 2\index.html остались во вложенных папках "1" и "2", а не появлялся запрос на переписывание файла).

Решение: в общей родительской папке отдайте консольную команду вида

xcopy маска путь /s

например

xcopy *.html d:\temp\ /s

Относительные пути ко всем найденным во вложенных папках файлам будут сохранены. Потом уже из temp кидайте файлы в удалённый источник или ещё куда-то тем же Far'ом.

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

Решение: не мучайтесь с dir /s и её лишними данными в выводе, просто перейдите в общую родительскую папку и скажите в консоли

where /r . *.* /f /t >list.txt

Затем открывайте полученный в папке файл list.txt в Excel или другом табличном редакторе, позволяющем разметить текст на столбцы данных.

Для кириллических версий Windows файл list.txt будет в кодировке OEM-866 (DOS), её можно при желании поменять в Notepad++ или где-то ещё (хотя Excel откроет и так).

3. Проблема: рекурсивно найти в папке и вложенных папках все файлы, содержащие нужную строку символов в кодировке UTF-8 и сформировать список путей к ним.

Решение: команда findtsr умеет искать рекурсивно, но отказывается иметь дело с UTF-8, нам помогло следующее:

findstr /S /M /G:"s.txt" ".\*.txt" > results.txt

Файл s.txt содержал искомую строку в кириллице UTF-8.

Перед вызовом findstr в консоли сменили кодировку на нужную:

chcp 65001

У меня сработало как непосредственно из консоли, так и из командной строки Far Manager. Это может работать долго при большом объёме данных.

01.05.2026, 12:20 [184 просмотра]


теги: textprocessing софт список алгоритм windows

К этой статье пока нет комментариев, Ваш будет первым