Перепишите первые три символа имен файлов *.ext в папке с набором букв
Как переписать первые 3 буквы имени файла
- Использование заданного алфавита: ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789 для рандомизации символов
- Ориентация на все файлы определенного расширения в папке *.ext
- Случайное дублирование 3 символов не имеет значения (уже 46 656 переменных)
- Пакетное решение сценария для запуска в среде Windows.
- Предпочитаю, чтобы скрипт был простым, чтобы сократить время выполнения.
Предлагаемый код и разбивка. Примечание: я до сих пор не знаю, как кодировать.
Оригинал:
032_name.ext 039_name.ext 0D8_name.ext 333_other.txt
Написать поверх первых трех символов
XXX-name.ext
После
D7K_name.ext L2V_name.ext 720_name.ext 333_other.txt
Создайте пакетный файл (SetRename.bat или SetRename.cmd) и выполните команду:
SetRename %r *.ext /or/ SetRename %r3%name% *.ext /or/ SetRename
Код 1 адаптирован из DavidPostill, пример полного решения
@echo off setlocal enabledelayedexpansion rem initialise counter set "alphabet=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9" rem process jpg and png files for /f "usebackq tokens=*" %%i in (`dir /b *.ext *.ex2`) do ( rem split into name and extension set _name=[reduce 3 characters]]%%~ni set _ext=%%~xi rem do the rename ren "%%i" "!y!-!_name!-!_ext!" increment counter set /alphabet "%Random%" ) endlocal
Код 2 адаптирован из 3 сообщений SU
@echo off setlocal enableextensions enabledelayedexpansion set "alphabet=A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9" for %%a in (%alphabet%) do ( set "a.!name!=%%a" set o=-%3 [reduce by 3] ) set "y=" for /l %%a in (1 1 3) do ( set /a "r=!random!" for %%b do set "y=!-%3!!r!!name!" ) echo(%y% endlocal
Текущее исследование:
- SU Переименование файла с суффиксом 01 01 03 04 и т. Д. (И дальнейшее чтение)
- SU Как изолировать имя файла и расширение от% 1?
- SU Переименование файлов из командной строки
- SU переименовать файлы случайный пакетный файл
- SU - Как удалить ту же часть имени файла
- SU Командная строка Переименовать префикс
- Переполнение стека в случайных строках: ссылка 1 ссылка 2 ссылка 3
- ss64 - случайный синтаксис
- ss64 - команда переименования REN
- wikibooks - Программирование Windows / Программирование CMD
- Informit - пакетные файлы Windows
- techguy - Случайные числа и буквы
1 ответ
Решение
Как я могу переписать первые 3 буквы набора имен файлов случайными символами?
Используйте следующий пакетный файл (SetRename.cmd):
@echo off
setlocal enableDelayedExpansion
set "_chars=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
for %%f in (%*) do (
rem split into name and extension
set "_name=%%~nf"
rem remove first 3 characters from _name
set "_name=!_name:~3!"
set "_ext=%%~xf"
rem create a 3 character random prefix
set "_prefix="
for /l %%n in (1 1 3) do (
set /a i=!random!%%36
for %%i in (!i!) do (
set "_prefix=!_prefix!!_chars:~%%i,1!" (
)
)
echo ren "%%f" "!_prefix!!_name!!_ext!"
)
endlocal
Заметки:
- Удалить
echo
когда ты доволенren
команда
Пример использования:
> dir /b
032_name.ext
039_name.ext
0D8_name.ext
333_other.txt
SetRename.cmd
> SetRename *.ext
> dir /b
333_other.txt
C42_name.ext
FZW_name.ext
MYQ_name.ext
SetRename.cmd
> SetRename *.ext
> dir /b
333_other.txt
A6O_name.ext
A8H_name.ext
H5P_name.ext
SetRename.cmd
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD | SS64.com
- Команды CMD для Windows (по категориям) - CMD для Windows - SS64.com
- EnableDelayedExpansion - Windows CMD - SS64.com
- Для - циклический просмотр файлов - Windows CMD - SS64.com
- Параметры / Аргументы - Windows CMD - SS64.com
- редактировать переменную заменить - Windows CMD - SS64.com
- переменная подстрока - Windows CMD - SS64.com