1

Тема: Масове перейменування файлів

Доброго вечора, шановні!

Будь ласка, допоможіть вирішити наступну задачку:
Є перелік файлів, в яких в назві потрібно видалити декілька символів з початку і декілька з кінця, наприклад, є файли 2020.01.20_хххх_15.06.doc і 2020.03.05_ххххххх_22.01.doc, де в назві потрібно залишити тільки хххх.doc і ххххххх.doc. Файлів звичайно значно більше, але у всіх файлів потрібно видалити в назві однаково перших 11 символів і останніх 6 символів.

Думав, що впораюсь за допомогою групового перейменування в Total Commander, але, нажаль, такої функції там не знайшов. :(

2

Re: Масове перейменування файлів

Сумніваюсь щоб такий софт був, простіше самому написати невелику программу , якщо буде актуально, завтра вам напишу, там роботи на 20 хв.

Подякували: makajaha1

3

Re: Масове перейменування файлів

Див. RegexRenamer

Подякували: makajaha1

4 Востаннє редагувалося dot (18.07.2020 06:33:12)

Re: Масове перейменування файлів

Odna z perevah terminalu. Svojoho tcasu buv na Vyndovsi tcerez robotu, vstanovyv sobi (Anql.) Syqvyn, de (Anql.) mogna abo tcerez spoluku for + mv tcy rename ctcosj podibne zrobyty, i gyv sobi. A mogna i ne tcerez Syqvyn, bo sam Majkrosoft ctcosj tam potroxu vbudovuje osnovy Linuksa.

Zvisno, mogna i na (Anql.) PaverCeli tcy na terminali vid Vindovs, ale to ne duge kruto.

Подякували: makajaha1

5

Re: Масове перейменування файлів

makajaha написав:

ExPy, не розумію, що з цим кодом робити?

Vstanovyty PHP, zminj cljax v kodi i zapustyty joho.

Подякували: ExPy, makajaha2

6

Re: Масове перейменування файлів

Звідси встановити? - https://www.php.net/downloads.php

7

Re: Масове перейменування файлів

Ok. Я зрозумів - вирішили мене позбутись на цьому форумі :)
Встановлювати php передумав, так як на офіційному сайті, за інструкцією, потрібно встановити ще різну хубу-бубу.
Перейшов до варіанта з кодом на сі, але також виникло бажання відкласти це питання на майбутнє, так як встановив компілятор пеллес сі, створив новий проект, далі вставив запропонований вище код на сі, вніс зміни щодо розширення файлів і шляху до них, але що далі робити ніяк не второпаю :(, хочу зберегти як екзешний файл, але через меню "файл-зберегти як..." такий варіант відсутній :(. І що далі?
Йду шукати відповіді в google.

8 Востаннє редагувалося makajaha (19.07.2020 11:29:22)

Re: Масове перейменування файлів

Створив новий проект з назвою Massrename і типом Win32 Console program (EXE), далі додав в проект новий файл Massrename.c, далі натиснув кнопку Compile і в діалоговому вікні побачив наступне повідомлення:
"Project build started
Project build ended in complete failure"
Тисну на Execute, але нічого не відбувається, скоріш за все через попереднє повідомлення. :(

9

Re: Масове перейменування файлів

Ось:

Building Massrename.obj.
C:\Program Files\PellesC\Include\Win\winnt.h(105): fatal error #1014: #error: "No Target Architecture".
*** Error code: 1 ***
Done.

10 Востаннє редагувалося ExPy (01.08.2020 10:58:40)

Re: Масове перейменування файлів

Можна звiдти, можна взяти хоч денвер , без рiзницi.
Ставите PHP, далi змiнили шлях в скрiптi i запуск.

Подякували: makajaha1

11

Re: Масове перейменування файлів

ExPy написав:

Можна звiдти, можна взяти хоч денвер , без рiзницi.
Ставите PHP, далi змiнили шлях в скрiптi i запуск.

"Денвер" використовує версію 5.3, яку випустили в 2009. Для Windows є Xampp/*Альтернативи*.

P.S PHP 8 не буде отримувати оновлення на Windows.

12 Востаннє редагувалося koala (19.07.2020 16:56:48)

Re: Масове перейменування файлів

makajaha написав:

Доброго вечора, шановні!

Будь ласка, допоможіть вирішити наступну задачку:
Є перелік файлів, в яких в назві потрібно видалити декілька символів з початку і декілька з кінця, наприклад, є файли 2020.01.20_хххх_15.06.doc і 2020.03.05_ххххххх_22.01.doc, де в назві потрібно залишити тільки хххх.doc і ххххххх.doc. Файлів звичайно значно більше, але у всіх файлів потрібно видалити в назві однаково перших 11 символів і останніх 6 символів.

Думав, що впораюсь за допомогою групового перейменування в Total Commander, але, нажаль, такої функції там не знайшов. :(

Погано шукали. Ctrl+M - мульти-перейменовування; після цього треба написати правильний регулярний вираз. Наскільки я розумію, у вашому випадку

Шукати: ([0-9.]*)_(.*)_([0-9.]*)\.(.*)
Замінити на $2.$4

і поставити галочку на RegEx. Принаймні, так пишуть.
У будь-якому разі там буде показано, що як перейменується, перед запуском перейменування.

Подякували: makajaha1

13

Re: Масове перейменування файлів

ExPy написав:

Project options->compiler-> галочка "Enable Microsoft Extensions"

Не допомогло, нажаль :(
Опишу все покроково, можливо я роблю якусь просту помилку, про яку ви навіть не можете здогадатись:
Створюю новий проект MassRename вибираючи тип Win32 Console program (EXE), далі в лівому вікні ПКМ на назву проекту і додаю файл MassRename.c, два рази ЛКМ по цьому файлу в лівому вікні і вставляю код наданий вами, перевірив чи нічого зайвого на початку і в кінці коду, далі вношу зміни: в трьох місцях doc міняю на eps і e:\\test1\\ на D:\\rename\\, ставлю галочку "Enable Microsoft Extensions", тисну на "Save", далі тисну кнопку "Compile", при цьому в діалоговому вікні "Output" з'являється наступне повідомлення - "Project build started Project build ended successfully", далі тисну "Execute" і нічого не відбувається, в "Output" - "Project build started Project build ended in complete failure" і в "Project" це повідомлення про помилку:

Building MassRename.exe.
POLINK: error: Unresolved external symbol '__imp__MessageBoxW@16' - referenced from 'C:\Users\Admin\Documents\Pelles C Projects\MassRename\output\MassRename.obj'.
POLINK: fatal error: 1 unresolved external(s).
*** Error code: 1 ***
Done.

14

Re: Масове перейменування файлів

koala написав:
makajaha написав:

Доброго вечора, шановні!

Будь ласка, допоможіть вирішити наступну задачку:
Є перелік файлів, в яких в назві потрібно видалити декілька символів з початку і декілька з кінця, наприклад, є файли 2020.01.20_хххх_15.06.doc і 2020.03.05_ххххххх_22.01.doc, де в назві потрібно залишити тільки хххх.doc і ххххххх.doc. Файлів звичайно значно більше, але у всіх файлів потрібно видалити в назві однаково перших 11 символів і останніх 6 символів.

Думав, що впораюсь за допомогою групового перейменування в Total Commander, але, нажаль, такої функції там не знайшов. :(

Погано шукали. Ctrl+M - мульти-перейменовування; після цього треба написати правильний регулярний вираз. Наскільки я розумію, у вашому випадку

Шукати: ([0-9.]*)_(.*)_([0-9.]*)\.(.*)
Замінити на $2.$4

і поставити галочку на RegEx. Принаймні, так пишуть.
У будь-якому разі там буде показано, що як перейменується, перед запуском перейменування.

Дякую, вийшло! Це те, що потрібно!

15

Re: Масове перейменування файлів

А в чому сенс робити код для разової задачі на С (та ще й пишучи код, заточений під конкретну ОС та середовище розробки)? Там більше наморочитеся з компіляцією коду на чужій машині (що, власне, ви й зробили), ніж виграєте часу від автоматизації.

PHP — в принципі, можна щось таке робити й на голому php без веб-сервера (просто треба знати, як запускати), а тягти цілий денвер для такої дрібниці (якщо в скрипті ніякої взаємодії з веб-інтерфейсом нема) — якось трохи аж занадто. Просто всі звикли, що php — це для веб-серверів, хоча тут сервер непотрібен.

Якби це робив я, то взяв би теж щось інтерпретоване (python, perl, батник з використанням sed, і т.п.) — порівняно з php, дещо простіше встановити й запустити з командного рядка.

Подякували: plusxx, makajaha2

16 Востаннє редагувалося koala (23.07.2020 07:52:36)

Re: Масове перейменування файлів

кредо справжнього програміста

https://replace.org.ua/uploads/images/931/0a0e1b7a6bd6f3a2729d220c3a9a3f29.jpg

17

Re: Масове перейменування файлів

ExPy написав:

господи боже, та виключте антивiрус.. логiчно шо блокує.
короче, давайте закриєм цю тему. Я не вмiю пояснювати, вибачте. Думав, що ви программiст або бiля того.
Користуйтесь тоталом чи чим там порадили, все.

Антивірус, нажаль, не зможу вимкнути :(
Гаразд, і ви вибачайте, що я вас піднапряг. Я не програміст і думав, що ви це давно зрозуміли. :)
Тотал дійсно виходить більш гнучкий для групового перейменування, так як не завжди потрібно одну і ту ж саму кількість символів видаляти.
Дякую усім хто відгукнувся і підтримав, а особливе дякую koala!
Тему можна закривати.

18 Востаннє редагувалося P.Y. (31.07.2020 17:27:06)

Re: Масове перейменування файлів

P.Y.,там нiчого складного нема, скомпiлював i запустив; скажiмо пан iндус чи пан koala не мали би проблем з тим кодом на Сi чи з виключенням авера.

Бо вони частіше мають справу з С/С++. А користувач може й не бути програмістом-сішником, як і програмістом взагалі. Програма має розповсюджуватись у такий спосіб, щоб будь-який ламер, виконавши пару простих інструкцій, міг її запустити. Не «постав важке пропрієтарне ІДЕ й залізь кудись-там у меню. О, а ще там галочку треба зняти», а щось на рівні «make; make install» — на жаль, культура розповсюдження опенсорсних продуктів для windows так і не сформувалась, тому кількість додаткових дій буде дещо більшою...

i чим PHP складнiше пiтона чи перл? Хто на шо вчився.. все скрiптовi мови.

Трохи складніше з точки зору запуску: php для cgi (який простіше пристосувати для дій з командного рядка), php-сервер, php-модуль для веб-сервера — який із варіантів краще вибрати? З точку зору складності коду, різниця з чистим perl'ом чи python'ом невелика, звичайно.
Найкомпактнішим вийшов би батник з використанням sed або perl — щось назразок такого:

dir/b *.doc|sed "s/^[0-9.]_\([^_]*\)_[0-9.]\.doc$/ren \0 \1.doc/; /^ren /!d">tmpren.bat
call tmpren.bat
del tmpren.bat

(Я не тестив, але десь приблизно так).
Якби перейменування було трохи простішим (напр., дописати щось перед ім'ям або розширення поміняти), можна було б обійтись і зовсім без sed, використавши вбудовану команду for.

P.S. Виправив дещо. Попередній варіант теж працював би (якщо я більш ніде не накосячив), але через відсутність call відбувався перехід на згенерований тимчасовий батник, який після завершення лишався на диску невидаленим.
P.P.S. Ще трохи підправив — попередня версія не викидала зі списку імен файлів, що перейменуванню не підлягали (якщо такі були в директорії), і намагалась їх просто запустити. В принципі, є ще деякі потенційні дірки, але це потім.

Подякували: leofun01, plusxx, makajaha3