Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.90/21: Рейтинг темы: голосов - 21, средняя оценка - 4.90
Dragokas
Эксперт WindowsАвтор FAQ
17065 / 7120 / 861
Регистрация: 25.12.2011
Сообщений: 10,931
Записей в блоге: 16
1

XRENN - переименование файлов с использованием регулярных выражений

13.07.2014, 00:27. Просмотров 4296. Ответов 24

Автор: Smitis

Специально для CyberForum - консольная утилита для переименования файлов с использованием регулярных выражений.
Предистория
С некоторых пор перестал меня устравать скрипт на VBS для переименования файлов. http://www.cyberforum.ru/post3932252.html
- Работает медлено.
- Проблема с кодировками, особенно сохранение в UTF-8 (файлы отката)
- Никогда нет уверенности, через cscript или wscript он выполнится (а запускать через них слишком длинно).
- Объект Shell.Application.NameSpace, используемый для фильтрации файлов завязан на проводник и не всегда адекватно себя ведёт (то zip файлы папками считает, то вообще ничего не видит, то сортирует неизвестно как), а в последних версиях винды ситуация только ухудшилась.
- На FAT и FAT32 (флешки) отсутствует сортировка
- и т.д.
Поэтому скрипт был переписан на PureBasic, при этом добавлены возможности другого скрипта для перенумерации файлов. Как ни странно, существенного увеличения скорости достичь не удалось (~2 раза, правда, это если не обрабатывать описания, с описаниями выигрыш скорость существенно выше). Регулярные выражения достаточно тяжёлые и забирают, похоже, основную массу времени.
Краткое описание
Как и скрипт vrenn, программа изменяет только имена файлов, расширения не затрагиваются. Для папок считается, что у них расширений нет. Имена вида ".qwerty", т.е. начинающиеся с единственной точки, считаются состоящими из одного имени без расширения.
Назначение программы отражено её названии:
XRENN =
X - Регулярные выражения
REN - RENAME / RENUMBER
N - Names only

Работа с регулярными выражениями построена на базе библиотеки PCRE, в версии входящей в состав библиотеки PureBasic и допиленой напильником . Не все возможности PCRE поддерживаются. Вместо PCRE можно задействовать ActiveX объект VBScript.RegExp, указав ключ /VBS или /VBSX. К сожалению, пока нет индикации ошибок VBScript.RegExp.

Основные функции (кратко):

* Переименование.
XRENN [mask] pattern replace|\ [/] [/PF:text] [/SF:text]

* Перенумерация.
XRENN [[mask] pattern] /N[:start] [/A:width] [/STEP:step] [/I:index|/]

* Выравнивание чисел.
XRENN [[mask] pattern] /A:width [/I:index|/]

* Копирование (/C) или перемещение (/M)
XRENN [mask] pattern /C:folder|/M:folder

* Удаление (/D) или удаление в корзину (/DR)
XRENN [mask] pattern /D|/DR

* Откат переименования
XRENN /U:undofile

* Откат последнего переименования для текущей папки
XRENN /UL

Общие ключи
/mask - Альтернативный способ задать маску. Маска должна содержать хотя бы один символ * или ?.
/L:filelist - файл, содержащий список обрабатываемых файлов.
/Q - Не выводить результаты работы и сообщения на экран, пауза в конце не делается.
/Q1 - Все результаты, ошибки и статистика выводится на экран. Пауза в конце не делается.
/Q2 - Выводится только статистика. Пауза не делается.
/VBS - Для работы с регулярными выражениями используется VBScript.RegExp
/VBSX - Для работы с регулярными выражениями используется VBScript.RegExp, обратные ссылки задаются в виде \1, \2 и т.д.
/CS - Case Sensitive - Учитывать регистр в регулярном выражении.
/H - Обрабатывать скрытые и системные файлы.
/Z- - Не обрабатывать описания.
/Z+ - Обрабатывать описания.
/U- - Не создавать файл отката.
/U+ - Создавать файл отката.
/UCD - Создавать скрытый файл отката в текущей папке.

Кода возврата
0 - Нет ошибок
1 - Ошибка в параметрах.
2 - Ошибка в регулярном выражении.
3 - Ошибка открытия файла списка или файла отката.
4 - Ошибка изменения папки.
5 - Ошибка переименования.
6 - Ошибка обработки файла описаний.
7 - Ошибки отката.

Синонимы ключей: /C - /COPY, /M - /MOVE, /DR - /RECYCLE, /D - /DELETE, /N - /RENUM, /A - /ALIGN, /I - /INDDEX, /U - /UNDO, /UL - /UNDOLAST, /U+ - /UNDO+, /U- - /UNDO-, /UCD - /UNDOCD, /SF - /SUFFIX, /PF - /PREFIX, /L - /LIST, /T - /TEST. В синонимах разделительные знаки ":" и "=" опускать нельзя.

Программа развивается, добавляются новые возможности, правятся ошибки. Принимаются багрепорты и предложения по развитию.
В планах:
- Обратная сортировка.
- Сортировка без учёта расширений.
- Not Global
- Преобразование регистра в заменяемой строке.

Более подробное описание в прилагаемом файле.
0
Вложения
Тип файла: 7z xrenn.5.01.00.7z (72.2 Кб, 101 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2014, 00:27
Ответы с готовыми решениями:

Поиск файла с использованием подстановочных символов и регулярных выражений
А не подскажите еще как правильно сгенерить имя файла для цикла for? строка с ошибкой for %%j in...

Переименование PDF-файлов в имена, берущиеся из содержимого этих файлов
Всем доброго времени суток!:) Подскажите, пожалуйста, как переименовать файл с расширением pdf,...

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

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

Экранирование с использованием регулярных выражений
Подскажите пожалуйста: у меня есть файл в формате json. В нем есть куски текста на укр. языке....

24
Dragokas
Эксперт WindowsАвтор FAQ
17065 / 7120 / 861
Регистрация: 25.12.2011
Сообщений: 10,931
Записей в блоге: 16
13.07.2014, 00:35  [ТС] 2
Спасибо, что поделились проектом.

Цитата Сообщение от Dragokas Посмотреть сообщение
Принимаются багрепорты и предложения по развитию.
Хотелось бы видеть в архиве отдельной папкой хотя бы один пример:
несколько файлов и батник с полным примером вызова.

Мое ИМХО, для человека, который ни разу не пользовался утилитой,
вот такое описание (под спойлером) самое идеальное. Но это мое личное мнение.

При использовании синонимов разделительные знаки ":" и "=" опускать нельзя.
Соответственно и на это пример, желательно в справке.

Из описания:

/Z- - Не обрабатывать описания.
/Z+ - Обрабатывать описания.
/U- - Не создавать файл отката.
/U+ - Создавать файл отката.

Хотелось бы дописку в скобках "(по-умолчанию)" для пунктам, которые такими являются.

Кода возврата
* Откат переименования
XRENN /U:undofile

* Откат последнего переименования для текущей папки
XRENN /UL
В чем отличие?

* Выравнивание чисел.
XRENN [[mask] pattern] /A:width [/I:index|/]
Аналогично перенумерации без изменения значения самого числа, только выравнивание.

* Копирование (/C) или перемещение (/M) в заданую папку.
XRENN [mask] pattern /C:folder|/M:folder
Копируются или перемещаются только файлы, ключи /F и /FF игнорируются.
При необходимости, папка назначения будет создана.

* Удаление (/D) или удаление в корзину (/DR).
XRENN [mask] pattern /D|/DR
Удаляются только файлы, ключи /F и /FF игнорируются.
Я так понимаю утилита поддерживает функции кроме переименования еще и копирование и удаление.
Тогда об этом должно быть оговорено сразу же под названием утилиты, как основной функционал.
0
Smitis
1629 / 338 / 40
Регистрация: 15.10.2012
Сообщений: 531
13.07.2014, 10:21 3
Описание буду подправлять.
Примеры, конечно, надо добавить, подумаю.
В чем отличие?
Это то чего не было в скрипте, в случае неудачной команды (не так составил регулярное выражение и т.п.) можно очень быстро запороть множество файлов. Поэтому во временной папке при каждом удачном вызове программы создаётся файл отката. По структуре, файл отката это командный файл, в котором в обратном порядке записаны команды переименования, восстанавливающие имена файлов. В файле есть ещё некоторые команды, устанавливающие/восстанавливающие кодовую таблицу, CHDIR на папку, в которой производилось переименование. Можно имя этого файла передать XRENN и тогда программа сама сменит папку и произведёт обратное переименование. Заодно и вернёт описания файлов. Я слишком часто использую описания файлов в ФАРе и поэтому для меня этот функционал важен, кто не использует, скорее всего просто ничего не заметит. Отработаному файлу отката будет изменено расширение с xrenn на xrenn-bak. Если запустить XRENN с ключом /UL программа сама ищет последний созданый файл отката (по имени), проверяет в нём CHDIR, и если это CHDIR на текущую папку, выполняет откат переименования. Таким образом, если вдруг напортачил с переименованими, можно не искать, где там и какие файлы отката, а выполнить "XRENN /UL" (/UNDOLAST) необходимое количество раз.

Копирование, перемещение и удаление я считаю, всё-таки, второстепенными функциями. Копирование и переименование были добавлены в скрипт vrenn исключительно по принципу "чтобы былО", поэтому, когда переносил функционал в программу, оставил их (хотя некоторое время колебался), ну и до кучи добавил удаление (до удалени в скрипте руки тогда не дошли).

Про опускание знаков ":" и "=" - это пришло из другого скрипта для перенумерации, можно написать "xrenn /n:001 /i:2" или можно записать "xrenn /n001 /i2", но в "длинной" форме только так "xrenn /renum:001 /index:2"
0
Dragokas
Эксперт WindowsАвтор FAQ
17065 / 7120 / 861
Регистрация: 25.12.2011
Сообщений: 10,931
Записей в блоге: 16
13.07.2014, 15:09  [ТС] 4
Цитата Сообщение от Smitis Посмотреть сообщение
Копирование, перемещение и удаление я считаю, всё-таки, второстепенными функциями. Копирование и переименование были добавлены в скрипт vrenn исключительно по принципу "чтобы былО", поэтому, когда переносил функционал в программу, оставил их (хотя некоторое время колебался), ну и до кучи добавил удаление (до удалени в скрипте руки тогда не дошли).
Очень даже хороший функционал.
Я вообще за, если это будет сразу бросаться в глаза.

* Откат переименования
XRENN /U:undofile
* Откат последнего переименования для текущей папки
XRENN /UL
Понятно. Грубо говоря
XRENN /U:undofile - для одного файла.
XRENN /UL - для всей папки.

Между слов, какие функции в FAR-е подвязываешь к descript.ion ?
0
13.07.2014, 15:09
Smitis
1629 / 338 / 40
Регистрация: 15.10.2012
Сообщений: 531
13.07.2014, 16:43 5
Цитата Сообщение от Dragokas Посмотреть сообщение
Я вообще за, если это будет сразу бросаться в глаза.
Менять имя не хочу. Может что-то типа
Переименование файлов с использованием регулярных выражений или перенумерация файлов.
В качестве дополнительной возможности программа может копировать, перемещать или удалять файлы, имена которых совпадают с регулярным выраженим.
?

Цитата Сообщение от Dragokas Посмотреть сообщение
Понятно. Грубо говоря
XRENN /U:undofile - для одного файла.
XRENN /UL - для всей папки.
Допустим, выполняются три переименования подряд, в результате чего создаются файлы
2014-07-13--09-52-50--00000000000184267554.xrenn
2014-07-13--09-53-18--00000000000184295291.xrenn
2014-07-13--09-53-24--00000000000184301047.xrenn
Надо выполнить откат.
Можно выполнить XRENN /U:2014-07-13--09-53-24--00000000000184301047.xrenn
А можно выполнить XRENN /UNDOLAST
В обоих случаях файл будет переименован в 2014-07-13--09-53-24--00000000000184301047.xrenn-bak
Если продолжать откат, выполнить либо XRENN /U:2014-07-13--09-53-18--00000000000184295291.xrenn
Либо опять просто XRENN /UNDOLAST
Файл будет переименован в 2014-07-13--09-53-18--00000000000184295291.xrenn-bak и следующей командой /UNDOLAST можно выполнить следующий откат.
Но /UNDOLAST работает только для текущей папки - из всех файлов *.xrenn ищется последний, содержащий строчку "@CHDIR /D путь" на текущую папку. Это сделано специально, чтобы случайно не выполнить UNDOLAST неизвестно куда.

Цитата Сообщение от Dragokas Посмотреть сообщение
Между слов, какие функции в FAR-е подвязываешь к descript.ion ?
Собственно, у меня всегда в окне ФАРа всегда открыт хотя бы узкий, но столбец, показывающий описание. Есть макрос DESCSS, работающий аналогично QuickSearch для быстрого поиска по описаниям.
Навскидку использование описаний:
- Коментарии к пректу (например, на одном предпрятии есть папка проекта C4115, менять её не желательно, делаю её коментарий Robot-A)
- Ссылки на сайты (форумы) скачанного файла или другой коментарий (серийник )
- Дату, когда не желательно менять имя файла.
- Размер большого файла при скачивании wget-от в отдельном окне, чтобы отследить, всё ли скачалось.
и т.п.
1
Smitis
1629 / 338 / 40
Регистрация: 15.10.2012
Сообщений: 531
19.07.2014, 18:18 6
Ключи /Z+ и /U+ (/UNDO+) будут удалены, как, по сути, ничего не делающие. Вообще, я думал, добавить файл с настройками по умолчанию (xrenn.ini) или переменную среды (xrenncmd) с ключами по умолчанию или то и другое. Но теперь не хочу - нафига тут ещё какие-то файлы конфигурации? Тогда необходимость в этих ключах отпадает.

Такой вот вопрос возник. Исправлял проверку параметров - какой параметр (без /) чему соответствует. Как то запутано получается - первый параметр может быть маской, а может быть шаблоном. Эта путаница ещё в vrenn была, где когда чем считать. Может ну его нафиг? Маску всегда задавать как ключ /*.txt и она должна иметь хотя бы один символ * или ? (а иначе это и не маска). Таким образом первый параметр всегда шаблон, второй всегда замена. Так будет однозначно.
0
Dragokas
Эксперт WindowsАвтор FAQ
17065 / 7120 / 861
Регистрация: 25.12.2011
Сообщений: 10,931
Записей в блоге: 16
19.07.2014, 19:46  [ТС] 7
Smitis, лучше наоборот - как в JS.
паттерн задается в виде /pattern/modifiers
а маска включаемых в поиск файлов как обычно XRENN c:\temp\*.* к примеру
0
Smitis
1629 / 338 / 40
Регистрация: 15.10.2012
Сообщений: 531
19.07.2014, 21:52 8
Тогда уж надо /patern/replace/modifiers, но не хочется ещё и синтаксическим разбором регулярного выражения заниматься. Спасает, конечно, то что символ / в именах файлов недопустим, а нам регэксп для имён файлов и нужен. Когда-то такая идея уже была. Вот только некрасиво всё это смотрится, если в выражении встречаются пробелы и всё это надо ещё и в кавычки заключать. А чтобы без кавычек - это свой парсер командной строки делать и сразу конфликты с ключами возникают.

Добавлено через 26 минут
К сожалению, общепринятый символ задания ключей под Виндой "/" совпадает с общепринятым символом-ограничителем для регулярных выражений.
0
Dragokas
Эксперт WindowsАвтор FAQ
17065 / 7120 / 861
Регистрация: 25.12.2011
Сообщений: 10,931
Записей в блоге: 16
19.07.2014, 23:08  [ТС] 9
Заключение аргументов, в составе которых есть спецсимволы или знак пробела - в кавычки - это общепринятый стиль вызова консольных программ в командной строке.
Думаю, здесь ничего нового выдумывать не нужно.
Все превосходно разбирается с помощью функции CommandLineToArgvW.
Если что и парсеры уже придуманы.

На счет полного синтаксиса, вот и получится:

Bash
1
XRENN *.* /patern/modifiers /replace
Я конечно не навязываю, но думаю, что так будет лучше.
0
Smitis
1629 / 338 / 40
Регистрация: 15.10.2012
Сообщений: 531
20.07.2014, 13:12 10
Плохо. Как, например, отличить ключ /cs от строки замены?
Идеально было бы /patern/replace/, но если будут пробелы, то всё это надо заключать в кавычки "/pat ern/rep lace/" и уже не так смотрится. Вот тут бы и понадобился свой парсер - есть символ начала выражения "/", есть в середине, в конце, но опять гадские пробелы всё портят и если вдруг будет что-то типа /n2 /a3 / непонятно, что это, ключи или регулярное выражение. Переходить на ключи "с минуса" -N2 тоже не дело.

В общем, не вижу пока нормального решения - так, чтобы и вводить поменьше и выглядело читабельно и неоднозначностей не возникало...
0
Eva Rosalene
Ladybug
4057 / 1595 / 304
Регистрация: 06.01.2013
Сообщений: 4,190
Завершенные тесты: 2
20.07.2014, 14:26 11
Smitis, как вариант, как в cscript начинать ключи с "//". Например, "//A".
Также, фиксировать положение паттерна и реплейса КОНЦОМ строки. Тогда одиночный символ / будет означать конец ключей и начало регэкспов.
0
Dragokas
Эксперт WindowsАвтор FAQ
17065 / 7120 / 861
Регистрация: 25.12.2011
Сообщений: 10,931
Записей в блоге: 16
20.07.2014, 17:04  [ТС] 12
Цитата Сообщение от Smitis Посмотреть сообщение
если вдруг будет что-то типа /n2 /a3 / непонятно, что это, ключи или регулярное выражение.
Как вариант, запретить указывать ключи перед регекспами.
1
Smitis
1629 / 338 / 40
Регистрация: 15.10.2012
Сообщений: 531
23.07.2014, 22:29 13
Имхо, то что для WSH ключи начинаются с // не несёт никакой смысловой нагрузки. Разве только визуальная возможность выделять их из общей командной строки. Непонятно, зачем так сделали.

Я стараюсь придерживаться некой концепции использования параметров, о которой несколько слов. Эта концепция схожа с используемой в WSH, так как я использую и скрипты и программы, в общем, чтобы было похоже. Есть "позиционные" параметры, unnamed в терминологии wsh, т.е. смысл параметра зависит от его положения относительно других позиционных параметров. В дальнейшем - это просто "параметры". Есть "ключи", начинающиеся с /, в терминологии wsh - named. Имеют вид /ключ или /ключ:значение. В дальнейшем - просто ключи. Ключи могут располагаться где угодно, в том числе и между/перед позиционными параметрами. Конфликты между ключами обрабатываются просто - обрабатываем ключи слева на право, в случае конфликта приоритет имеет обработанный последним. Ключи игнорируются, если они не имеют смысла в определённом контексте (например, при удалении ключи /F и /FF смысла не имеют, всё равно удаляются только файлы).
Вот с позиционными параметрами я и хочу навести порядок. А то что означает первый параметр?
Bash
1
xrenn /d *.doc aa+
Маску для файлов. Но маска не главный параметр, а главный - это шаблон (ради этого всё и затевалось). А шаблон может быть то первым, то вторым. В некоторых случаях он может и отсутствовать (при перенумерации). Тогда сбивается логика, что маска, если есть, всегда первая. Вот если бы маску файлов сделать обязательной, выглядело бы логично: xrenn /d mask [pattern]. Но маска - параметр второстепенный. Но логично, когда она на первом месте. Вот и хочу от неё избавиться - сделать в виде "ключа". Тем более, что такой вариант уже есть.
Может быть не достаточно аргументированно, но не нравится, и всё тут (аргумент, однако! )

Для регулярных выражений можно сделать синтаксис pattern/replace, с приоритетом меньшим, чем двумя отдельными параметрами.

П.С.
Нарисовался конфликт параметров. Пустой ключ / означает символ ^ в начале регулярного выражения (сопоставлять с началом строки). Было сделано для сокращения записи, так как в командной строке символ ^ имеет значение esc-символа, и для его использования надо заключать строку в кавычки, даже если нет дугих причин это делать (строку без пробелов). Но пустой параметр используется и при перенумерации, где означает обработку первого числа в имени. Пренумерация пришла из другой программы (скрипта на vbs) где регулярных выражений не было. А здесь есть... В общем, исправлю, будет означать только ^.
0
Smitis
1629 / 338 / 40
Регистрация: 15.10.2012
Сообщений: 531
27.07.2014, 21:08 14
v.5.01.04
- Удалены ключи /Z+ /U+ /UNDO+
- Более строгая проверка правильности параметров. В случае конфликта параметров, программа заканчивает выполнение с выдачей хелпа.
- При /PF или /SF, если нет замены, можно не задавать и шаблон. Тогда шаблон принимается "." (по сути - все файлы).
- Исправлено: В списке, заданом ключём /L сначала обрабатываются папки, затем файлы (раньше было общим списком, в результате часть имени папки после точки рассматривалась как расширение, что могло привести не к тому результату, который ожидался).
- Исправлено: Ключ / теперь только шаблон с начала строки.
- Исправлено: Ошибка переименования обработанного xrenn-файла командой /U:file (не запоминался путь к файлу).
- В файле отката chdir заменена на pushd.
- В файл отката в коментарий записываются параметры запуска xrenn.
- В файл отката, в случае ошибки переименования, помещается строка :ERROR name1 name2 (это было и ранее, но не было описано).

Файл описания пока не правил. С масками поведение пока не ломал, посмотрим.
1
Вложения
Тип файла: 7z xrenn.5.01.04.7z (68.2 Кб, 8 просмотров)
Smitis
1629 / 338 / 40
Регистрация: 15.10.2012
Сообщений: 531
24.08.2014, 23:17 15
v.5.02.00
- Новый PureBasic 5.30 (это сразу добавило пару десятков килобайт к программе ).
- Исправлена ошибка удаления в корзину.
- Исправлена ошибка выравнивания чисел.
- Более строгая проверка значений параметров и конфликтов параметров.
- Добавлена возможность задавать маску исключаемых файлов - задаётся вместе с обычной маской и отделяется от неё символом "\".
Например: 123*.*;234*.*\*.doc;*.txt или \*.jpg (в последнем случае маска не задана, только исключение).
- При перенумерации файлы сортируются по числовому значению в имени, заданному ключом /I или по умолчанию, а не по алфавиту, как раньше.
- /PF и /SF теперь отдельные операции, а не как опции при операции замены.
- Добавлена возможность вставки номера в имя файла: если имя после переименования или добавления суффикса/префикса содержит последователность символов \N, она будет будет заменена на очередной номер.
Нумерация задаётся ключами /NN (аналог /N - начальное значение), /NA (аналог /A - выравнивание) и /STEP.
По умолчанию нумерация начинается с 1 с шагом 1.
Если ключ /NA не задан, для выравнивания будет взята длина значения из ключа /NN с учётом всех цифр.
- Если перед номером в ключе /N (/RENUM) стоит знак "+" или "-" вместо перенумерации выполняется изменение номеров на заданное значение. Т.е., в каждом файле к числу заданному /I будет прибавлено значение параметра.
- Программа теперь автоматически расчитывает ширину поля для выравнивания чисел, т.е. делается предположительный анализ результата и числа выравниваются до длины самого большого числа.
Автоматический расчёт ширины не производится если:
-- В ключах /N и /NN число имеет слева незначащие нули - для выравнивания будет использована длина этого числа без знака с учётом всех незначащих нулей (т.е. взято количество всех цифр).
-- Используются ключи /A и /NA.
- В случае ошибок в параметрах, теперь выводится не общий help, а выводится список параметров с первого до ошибочного.

Под вопросом пока остаётся изменение чисел - оставить как сейчас, т.е. /N:1 это перенумерация с 1, а /N:+1 - это прибавить ко всем числам 1. Или сделать отдельным ключом, типа /ADD:1
1
Вложения
Тип файла: 7z xrenn.5.02.00.7z (71.9 Кб, 10 просмотров)
Smitis
1629 / 338 / 40
Регистрация: 15.10.2012
Сообщений: 531
14.09.2014, 01:53 16
v.5.03.00
- Исправлена ошибка обработки имён файлов в кавычках в списках и файлах отката - не правильно обрабатывались имена, начинающиеся с пробела.
- Исправлено выравнивание при вставке \N.
- При /A и /NA без значения или со значением равному 0, выравнивание будет происходить по файлу с числом максимальной длины. Для отключения выравнивания можно использовать /A:1 и /NA:1
- Переписан парсер командной строки. Стандартный парсер PureBasic не совсем хорошо обрабатывает параметры с необрамляющими весь параметр кавычками. Например параметр типа /p:" a s d f " WSH воспримет так же, как "/p: a s d f ", т.е., такие пары кавычек воспринимаются как часть параметра. Более сложный случай: "a s d f "zzz" 1 2 3 4" равнозначен "a s d f zzz 1 2 3 4". Парсер же PureBasic такие параметры разбивал на несколько. Единственное отличие от WSH теперь то, что новый парсер слитные параметры типа /d/f/g воспринимает раздельно, а WSH как один параметр.
Скрипт проверки параметров для WSH на VBS
Visual Basic
1
For Each arg In WScript.Arguments : n=n+1 : WScript.Echo CStr(n) & " :: <" & arg & ">" : Next
Файл с описанием в ближайшее время подправлю до актуальной версии.
1
Вложения
Тип файла: 7z xrenn.5.03.00.7z (71.5 Кб, 8 просмотров)
Smitis
1629 / 338 / 40
Регистрация: 15.10.2012
Сообщений: 531
17.09.2014, 16:37 17
Конкурент
ReNUM Files - программа для переименовывания/нумерации файлов (01-10 и т.д.)
1
LapisAlchemist
248 / 160 / 14
Регистрация: 10.03.2012
Сообщений: 544
Записей в блоге: 2
20.09.2014, 19:15 18
Smitis, ну я бы не сказал, что моё поделие является полноценным конкурентом вашей тулзы. У вас функционал обширнее и более профессионален. У меня же ориентация больше на простых юзверей. И потом, вряд ли я её буду дальше развивать. Sad but true.
Кстати, моя утилитка тоже на пурике.)
0
Smitis
1629 / 338 / 40
Регистрация: 15.10.2012
Сообщений: 531
27.09.2014, 21:36 19
v.5.04.00
- Восстановлено случайно потерявшееся исправление: Изменена обработка списка в ключе /L - папки и файлы обрабатываются раздельно.
- Добавлено: Ключ /UCD при выполнении /UNDO - не выполнять переход в папку (CHDIR и PUSHD), файлы обрабатывать в текущей папке (нужен для отката, когда путь к папке поменялся или папка была переименованна).
- Добавлено: При /UNDOLAST больше не выполняется переход в папку (CHDIR и PUSHD) в файлах отката, найденых в текущей папке (причина та же, что и для предыдущего изменения).
- Добавлено: Ключ /EXT - учитывать при переименовании расширения. Для особо тяжёлых случаев...
- Если файл не имеет описания, а для нового имени описание есть (по сути, ошибка в файле описаний), описание не удаляется, т.е. переименованный файл получит то потерянное описание.
- Файл отката теперь создаётся всегда, даже если не было переименованно ни одного файла. Раньше в этом случае он не создавался, а это приводит к неопределённости при последовательном откате нескольких переименований.
1
Вложения
Тип файла: 7z xrenn.5.04.00.7z (71.5 Кб, 37 просмотров)
Smitis
1629 / 338 / 40
Регистрация: 15.10.2012
Сообщений: 531
27.09.2014, 21:38 20
П.С.
Есть задумка написать более продвинутый аналог FORFILES...
0
27.09.2014, 21:38
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2014, 21:38

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

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

Бегущая строка с использованием регулярных выражений
Необходимо доработать программу с использованием регулярных выражений. using System; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru