|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] И снова о переименование файла с "шифровкой" расширения. (Ищу помощи). |
|
CMD/BAT - [решено] И снова о переименование файла с "шифровкой" расширения. (Ищу помощи).
|
Пользователь Сообщения: 99 |
Здравствуйте
Помогите с решением задачи: Задача: 1. по указанной паке 2. всем файлам внутри неё 3. добавить префикс с последовательным номером 4. после, всем расширениям изменить расширение на рандомно-генерированное (символы: ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789, длинна 8+ регулируемая) было: ----- alf.doc ball.txt ... world.jpg стало: ------ pr01__alf.DC4BSORY pr02__ball.XS5RPF0O ... pr04__world.FSAUAAQN Спасибо!!! * нумерованный префикс нужен по причине того, что в папке могут быть файлы вида w1020h2.001 w1020h2.002 w1020h2.003... - одинаковое название + нумерованное расширение - при смене расширения они потеряют последовательность, которую нужно сохранить - (последовательность обычная - по цифрам/алфавиту) ** гугление, изучение что по силам, сочетание, в течении всей ночи дало решение в виде костыля, которому пока и папку не указать... Кастыль
@echo off
:: переименовывание - каждый файл, добавляя префикс с нумирацией setlocal enabledelayedexpansion SET /A COUNT=0 FOR %%A IN (*.*) DO ( SET /A COUNT+=1 REN "%%A" "pr!COUNT!__*.*" ) :: переименовывание - всем рандомное расширение setlocal disableDelayedExpansion set "chars=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" for /f "eol=: delims=" %%F in ('dir /B /A-D /O:-N *.*') do call :renameFile "%%F" exit /b :renameFile setlocal enableDelayedExpansion :retry set "name=" for /l %%N in (1 1 8) do ( set /a I=!random!%%36 for %%I in (!I!) do set "name=!name!!chars:~%%I,1!" ) echo if exist *.!name! goto :retry endlocal & ren %1 *.%name% *** powershell? - нет |
|
Отправлено: 09:02, 29-11-2020 |
fascinating rhythm Сообщения: 6626
|
Профиль | Отправить PM | Цитировать Цитата blacks2:
|
|
------- Отправлено: 09:57, 29-11-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать blacks2, что делать, когда файлов окажется больше 99?
Цитата blacks2:
- такого никогда не будет! - будет. |
|
Отправлено: 10:45, 29-11-2020 | #3 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать blacks2,
Цитата Iska:
|
|
------- Отправлено: 11:36, 29-11-2020 | #4 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата blacks2:
Цитата blacks2:
все расширения менять на рандом нельзя добавлять ко всем рандомным префиксам в конце (иначе не будет правильной сортировки) родное расширение - тогда смысл в этом рандоме искать возможные варианты: .001, .002, ; .1, .2, ; .aaa, .bbb, .ccc, ; .a1, a2, ; - список бесконечен ------ + вопросы выше в силе ++ а какого лешего это надо или скажем именно так надо или какая конечная цель (идея) должна быть достигнута сим действом? |
|||
Отправлено: 18:45, 29-11-2020 | #5 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать alpap, blacks2,
Цитата alpap:
blacks2, кстати, после префикса сколько штук "_", у Вас 2 - это так задумано? |
|
------- Отправлено: 18:53, 29-11-2020 | #6 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
@Echo Off
cls
Set "BoxIn=Z:\Box_In"
Set "Pref=Pr"
Set /A N=100
Set "Delim=_"
FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\*.*" /B /O:N /A:-D ^|FINDSTR /I /V /R /C:"^%Pref%[0-9]*%Delim%.*$"`) DO (
Set /A N+=1
Call :RandStr 8 "RStr"
Call Ren "%BoxIn%\%%f" "%Pref%%%N:~1%%%Delim%%%f.%%RStr%%"
)
Pause
Exit /B
:RandStr
SetLocal EnableDelayedExpansion
Set "Symb=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
Set /A N=36
Set /A min=0, max=%N%-1
Set "Out="
Set /A j=!random!
FOR /L %%i IN (1,1,%1) DO (
Set /A j=%min%+^(%max%-%min%+1^)*!random!/32768
Call Set "Out=!Out!%%Symb:~!j!,1%%"
)
EndLocal DisableDelayedExpansion &Set "%~2=%Out%"
Exit /B
В процедурке Call :RandStr 8 "RStr" 8 - число генерируемых случайных символов, можете его менять Противу своего ощущения, ежели очень хочется уничтожить исходное расширение, вот вариант строки с переименованием |
|
------- Последний раз редактировалось megaloman, 29-11-2020 в 22:39. Отправлено: 20:02, 29-11-2020 | #7 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата megaloman:
- во-первых сокрытием тут уже и не пахнет - во-вторых (писал выше) сортировки при *.001[рандом], *.002[рандом], - не будет, а по задаче нужна (или из двух зол ... ?). |
|
Отправлено: 20:35, 29-11-2020 | #8 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Цитата alpap:
Цитата blacks2:
Цитата alpap:
|
|||
------- Последний раз редактировалось megaloman, 29-11-2020 в 21:07. Отправлено: 20:52, 29-11-2020 | #9 |
Пользователь Сообщения: 99
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Но, если прочтете вопрос внимательно, там есть готовый рабочий пример-кастыль. Так что сделать "наотмашь" тут не подходит. Я правда старался и изучал вопрос. Цитата Iska:
Ответ: по факту файлов будет 15-30 максимум. * шифровать весь диск/фото архивы ![]() Конечно веселее когда возможностей больше, но если по необходимости 15-30 файлов Цитата megaloman:
- нет не может, все файлы девственно чисты, только что созданные * замечу что пример-кастыль, переименовывает уже переименованные расширения Цитата alpap:
- исходник: blabla.txt - добавляется префикс pr01_blabla.txt == уже есть сортировка по алфвиту - далее меняется расширение на рандом == сортировка остается по префиксу-алфавиту, не смотря на рандомное расширение * конечно это всё работает если установка префикса pr01_ pr02_ идтет относительно, по умолчанию, алфавитной последовательности добавление префиксов Цитата alpap:
Домашний бекапер на cmd, подумал хорошей параноид-доп защитой от шифровальщиков будет сменить расширение файлам Почитал инфу по вирусам - те в основном ищут файлы по расширению. Поизучал какие расширения ищут - подумал что будет не лишним добавить подмену nas, облака, распределенные бекапы - знаю. понимаю. давно пользую. и понимаю, что алгоритмы могут заглянуть внутрь файла и вытаскивать оттуда что то за файл но то, для них, дополнительная нагрузка на поиск-анализ и в основном все работают по расширению. лучше что-то сделать, чем ничего... а то, как у одного моего клиента, на рабоче столе 2 файла: "пароли.doc" "пароли бухалтерия.doc"... плюс всегда есть доп плюшки если совсем параноить (зашифровать файл, убрать метки) * замечу что просто убрать расширение файла зачастую не помогает Цитата megaloman:
- думаю по факту расширения будут все одни (на худой конец папка по формату-расширению файлами) - на всяк случай подстраховался на *.* плюс с моими знаниями cmd, пока бы с ядром разобраться, после уже можно расширения переводить в переменные, менять местами, шифровать... а искать помощи у вас, уважаемого форума, о дополнительных няштяках - не правильно и файлы... в общем должны выглядеть так, словно по ним прошелся шифровальщик (провокация его на зацикленность) Цитата megaloman:
![]() В ближайшее время буду изучать. Цитата alpap:
одно сохранённое названия файла - какое тут уже сокрытие ![]() и в тушку файла всегда можно глянуть... Цитата megaloman:
Цитата megaloman:
![]() Цитата megaloman:
|
|||||||||||
Отправлено: 23:23, 29-11-2020 | #10 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - имя "входящего" файла без расширения | Radiant | Скриптовые языки администрирования Windows | 26 | 09-01-2017 15:34 | |
Комп полностью "зависает" на ~1мин и снова "отвисает" (подробнее внутри) | sashadeg | Непонятные проблемы с Железом | 24 | 09-04-2010 20:10 | |
Переименование "Мой компьютер", "Мои документы", "Мои рисунки" | AV4 | Автоматическая установка Windows 2000/XP/2003 | 3 | 11-01-2010 11:32 | |
[решено] Ищу ссылку на описание команд в "Пуск" -> "Выполнить" | Volan | Microsoft Windows 2000/XP | 3 | 29-06-2006 15:50 |
|