![]() |
Замена маленькой буквы на заглавную в именах файлов
Нужен скрипт для следующей задачи: необходимо заменить в именах файлов одну или несколько маленьких букв на заглавные (имена файлов могут быть как схожими, так и разными). Расположение заменяемой буквы от начала имён у всех файлов, как правило, одинаковое, за исключением случая, когда буква (или несколько) находятся в конце. Например, либо у всех - последняя, либо у всех - первая, либо у всех - вторая и третья, либо у всех две последние и т.д.
Пример 1: исходный вариант: Иванов.txt Петров.doc Сидоров.rtf Итомуподобных.docx требуемый результат: ИваноВ.txt ПетроВ.doc СидороВ.rtf ИтомуподобныХ.docx или так: исходный вариант: иванов.txt петров.doc сидоров.rtf итомуподобных.docx требуемый результат: Иванов.txt Петров.doc Сидоров.rtf Итомуподобных.docx Пример 2: исходный вариант: Ивановам.txt Петровод.doc Сидоровтс.rtf Итомуподобныхов.docx требуемый результат: ИвановАМ.txt ПетровОД.doc СидоровТС.rtf ИтомуподобныхОВ.docx или так: исходный вариант: 17_амиванов.txt 14_одпетров.doc 30_тссидоров.rtf 65_овитомуподобных.docx требуемый результат: 17_АМИванов.txt 14_ОДПетров.doc 30_ТССидоров.rtf 65_ОВИтомуподобных.docx Пробовал это проделать средствами TC, но подобная замена возможна только для файлов с однотипными именами, для файлов с разными именами такой вариант не проходит. :( |
Код:
@Echo Off |
gora,
Огромнейшее спасибо! Проверил - скрипт работает! Особо порадовало то, что скрипт обрабатывает и файлы во вложенных папках (правда почему-то не во всех). Есть пара пожеланий (если, конечно, это не сложно): 1. Можно ли в скрипт добавить возможность проделать то же самое с названиями папок? 2. Насколько понял, скрипт выполняет за один раз только один из четырёх вариантов (замена либо только первой буквы, либо только последней и т.д.) и выполнение за один раз нескольких вариантов для него невозможно, например, сочетание варианта с заменой только первой буквы с вариантом замены только последней (во всяком случае, при попытке это сделать выполняется только то, что стоит за последним CALL)? Насколько сложно их скрестить? P.S. Поэкспериментировал дальше: в Set preset сменил набор символов на латиницу (к сожалению, есть необходимость обрабатывать файлы и с такими именами), а для обработки взял первый попавшийся произвольный набор файлов (выдернул пару папок с файлами из MeGUI (на всякий случай выложил здесь). В итоге в работе скрипта обнаружилось несколько странностей: почему-то обработка прекращается, если встречается файл с именем, начинающимся с литеры "j", а также при обработке html-файлов, начинающихся на "a" и "b". :( |
Цитата:
Код:
For /F "tokens=* delims=" %%A In ('Dir /S /B /A:D "%folder%"') Do ( Цитата:
Цитата:
Код:
For /F "tokens=* delims=" %%A In ('Dir /S /B /A:D "%folder%"') Do ( Цитата:
|
Цитата:
Цитата:
Цитата:
ивановас.txt петровгв.doc сидоровоп.rtf итомуподобныхлв.docx ... эмат.html нужно получить вот это: ИвановАС.txt ПетровГВ.doc СидоровОП.rtf ИтомуподобныхЛВ.docx ... ЭмАТ.html Цитата:
Код:
Set preset=а_А б_Б в_В г_Г д_Д е_Е ё_Ё ж_Ж з_З и_И й_Й к_К л_Л м_М н_Н о_О п_П р_Р с_С т_Т у_У ф_Ф х_Х ц_Ц ч_Ч ш_Ш щ_Щ ъ_Ъ ы_Ы ь_Ь э_Э ю_Ю я_Я Код:
Set preset=a_A b_B c_C d_D e_E f_F g_G h_H i_I j_J k_K l_L m_M n_N o_O p_P q_Q r_R s_S t_T u_U v_V w_W x_X y_Y z_Z Цитата:
P.S. С ранее названным непереименованием файлов на "j", "a", "b" и т.п. вопрос вроде разрешился - тоже моя оплошность, не полностью заремаркировал в команде for те части скрипта, что относились к другим вариантам. Если оставляю только какой-то один - всё работает. Сейчас скрипт выглядит так: Код:
@Echo off |
Цитата:
Код:
Call :_case2 "!Result!" Цитата:
|
Цитата:
|
Вложений: 1
Добрый день!
Прошу помощи. Есть несколько сотен папок с песнями, но они в разном регистре на латинице. Хотелось бы привести всё в один формат - первая буква большая, остальные маленькие, в ручную очень долго. Если не трудно помогите пож-ста. Написал сюда потому что на основе данного скрипта можно это наверное сделать если немного подправить его, самому не хватает знаний.. http://forum.oszone.net/attachment.p...1&d=1674558148 |
registeruser1,
PowerShell: Код:
Get-Childitem D:\Music -Recurse -File | Foreach-Object { |
Спасибо конечно, а можно батником?
|
Цитата:
|
Foreigner, папки же, там не так просто.
|
Не, папки там в нормальном виде, в самих папках бардак
|
Надо поточнее писать тогда, кто такие "они".
|
Согласен, сорри...
|
Цитата:
registeruser1, Кстати, в 5.1 такой вариант не сработает, для 5.1: Код:
Get-Childitem D:\Music -Recurse -File | Foreach-Object { |
Да, пары функций в powershell не встроили...
Код:
# 1. Капитализация |
Время: 14:48. |
Время: 14:48.
© OSzone.net 2001-