Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] И снова о переименование файла с "шифровкой" расширения. (Ищу помощи).

Ответить
Настройки темы
CMD/BAT - [решено] И снова о переименование файла с "шифровкой" расширения. (Ищу помощи).

Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


Здравствуйте
Помогите с решением задачи:


Задача:
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

 

Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Цитата blacks2:
Помогите с решением задачи »
Не помогите, а сделайте за меня.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 09:57, 29-11-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


blacks2, что делать, когда файлов окажется больше 99?

Цитата blacks2:
***
powershell?
- нет »
***
- такого никогда не будет!
- будет.
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:45, 29-11-2020 | #3


Ветеран


Contributor


Сообщения: 2706
Благодарности: 1684

Профиль | Отправить PM | Цитировать


blacks2,
Цитата Iska:
что делать, когда файлов окажется больше 99? »
Переименовывать надо в исходной папке? А в ней не может быть, что существуют переименованные ранее файлы, и те которые не переименованы?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:36, 29-11-2020 | #4


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата blacks2:
всем расширениям изменить расширение на рандомно-генерированное
»
Цитата blacks2:
файлы вида w1020h2.001 w1020h2.002 w1020h2.003...
- при смене расширения они потеряют последовательность, которую нужно сохранить
»
теперь взгляд программиста
все расширения менять на рандом нельзя
добавлять ко всем рандомным префиксам в конце (иначе не будет правильной сортировки) родное расширение - тогда смысл в этом рандоме
искать возможные варианты: .001, .002, ; .1, .2, ; .aaa, .bbb, .ccc, ; .a1, a2, ; - список бесконечен
------
+ вопросы выше в силе
++ а какого лешего это надо или скажем именно так надо или какая конечная цель (идея) должна быть достигнута сим действом?
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:45, 29-11-2020 | #5


Ветеран


Contributor


Сообщения: 2706
Благодарности: 1684

Профиль | Отправить PM | Цитировать


alpap, blacks2,
Цитата alpap:
все расширения менять на рандом нельзя »
ИМХО, грамотнЕе, не вдаваясь в глубинный смысл сего действа, брать имя файл.раширение и приделывать к нему префикс_файл.раширение.рандом, по крайней мере, не сжигаем мосты, можно назад вернуться.
blacks2, кстати, после префикса сколько штук "_", у Вас 2 - это так задумано?

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 18:53, 29-11-2020 | #6


Ветеран


Contributor


Сообщения: 2706
Благодарности: 1684

Профиль | Отправить 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
Задайте свой путь в Set "BoxIn=Z:\Box_In", префикс Set "Pref=Pr", число знаков в номере префикса Set /A N=100 (здесь будет 2 знака), разделитель префикса и имени Set "Delim=_"
В процедурке
Call :RandStr 8 "RStr"
8 - число генерируемых случайных символов, можете его менять
Противу своего ощущения, ежели очень хочется уничтожить исходное расширение, вот вариант строки с переименованием
Код: Выделить весь код
		Call Ren "%BoxIn%\%%f" "%Pref%%%N:~1%%%Delim%%%~nf.%%RStr%%"

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 29-11-2020 в 22:39.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:02, 29-11-2020 | #7


Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


Цитата megaloman:
приделывать к нему префикс_файл.раширение.рандом »
так себе вариант
- во-первых сокрытием тут уже и не пахнет
- во-вторых (писал выше) сортировки при *.001[рандом], *.002[рандом], - не будет, а по задаче нужна (или из двух зол ... ?).

Отправлено: 20:35, 29-11-2020 | #8


Ветеран


Contributor


Сообщения: 2706
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Цитата alpap:
- во-первых сокрытием тут уже и не пахнет »
я не видел требования сокрытия. Видел требуемый результат:
Цитата blacks2:
было:
-----
alf.doc
ball.txt
...
world.jpg
стало:
------
pr01__alf.DC4BSORY
pr02__ball.XS5RPF0O
...
pr04__world.FSAUAAQN »
Меня не устроила необратимость этого действа.
Цитата alpap:
- во-вторых (писал выше) сортировки при *.001[рандом], *.002[рандом], - не будет »
При чтении исходных имен по алфавиту и добавления префикса с номером в формате с лидирующими нулями алфавитная последовательность нарушена не будет, при условии, что файлов не более 99 при двух знаках на номер в префиксе.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 29-11-2020 в 21:07.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:52, 29-11-2020 | #9


Пользователь


Сообщения: 99
Благодарности: 2

Профиль | Отправить PM | Цитировать


Цитата DJ Mogarych:
Не помогите, а сделайте за меня. »
Благодарю за замечание ). Самому совестно.
Но, если прочтете вопрос внимательно,
там есть готовый рабочий пример-кастыль.
Так что сделать "наотмашь" тут не подходит.
Я правда старался и изучал вопрос.




Цитата Iska:
что делать, когда файлов окажется больше 99? »
Блин, об том позабыл сказать... хоть мне и попадались строки ограничения/доп генерации..
Ответ: по факту файлов будет 15-30 максимум.

* шифровать весь диск/фото архивы - не предусматривается
Конечно веселее когда возможностей больше, но если по необходимости 15-30 файлов




Цитата megaloman:
Переименовывать надо в исходной папке? А в ней не может быть, что существуют переименованные ранее файлы, и те которые не переименованы? »
- по указанной папке, вне исполняемого файла cmd
- нет не может, все файлы девственно чисты, только что созданные

* замечу что пример-кастыль, переименовывает уже переименованные расширения



Цитата 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] И снова о переименование файла с "шифровкой" расширения. (Ищу помощи).

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход