С Новым годом! Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
2 / 2 / 0
Регистрация: 09.12.2015
Сообщений: 26

Переименовать файлы с определенным расширением на нескольких жестких дисках

23.04.2017, 12:40. Показов 2130. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Помогите разобраться чет не получается(
Суть такая: Нужен батник чтобы он находил все файлы с расширением .xml на нескольких жестких дисках (допустим С и D) и переименовывал их в db.xml (при этом если в одной папке больше таких файлов чем один то добавлял им цифру типо db.xml db1.xml db2.xml ... и т.д.) Заранее огромное спасибо!
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.04.2017, 12:40
Ответы с готовыми решениями:

Переименовать файлы по маске на всех дисках
Здравствуйте, уважаемые форумчане. Заранее извиняюсь за возможно нубский вопрос. С bat файлами я никогда не работал, в cmd дальше...

Переименовать файлы в папке именем файла с расширением .swf
Добрый день. С данной темой не знаком, так что обращаюсь за помощью к вам! Имеется каталог с кучей подкаталогов: С:\CD2\23\ С:\CD2\24\ ...

Переименовать все файлы с расширением, указанным в параметре 1, в файлы с расширением, указанным в параметре 2
Необходимо создать командный файл, который будет переименовывать все файлы с расширением, указанным в параметре 1 в файлы с расширением,...

15
 Аватар для ZoOoO
226 / 211 / 70
Регистрация: 09.02.2016
Сообщений: 1,040
23.04.2017, 20:05
Теоритически это выглядит наверно так.Надо сравнивать пути файла который переименовывается сейчас с путем предыдущего файла,и если они совпадают,то приписавать цифру.
0
2 / 2 / 0
Регистрация: 09.12.2015
Сообщений: 26
23.04.2017, 20:10  [ТС]
а как в коде это реализовать?
0
 Аватар для ZoOoO
226 / 211 / 70
Регистрация: 09.02.2016
Сообщений: 1,040
24.04.2017, 00:07
Примерно так.Но он работает на всю глубину одного каталога
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
Setlocal EnableDelayedExpansion
for /r "%userprofile%\Desktop\Batch" %%c in (*.docx) do (
set "b=%%~dpc"
call :1 
)
pause
exit /b
:1
pushd "!b!"
for /f "delims=" %%k in ('dir /b  *.docx') do (
ren "%%~nxk" "p!h!.docx"
set /a h+=1
)
set h=
exit /b
-----------------------------------------
У меня нет желания проверять это на всем компе(Извините).
Возможно для вашего варианта будет работать этот код:
Для дисков C и D
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@echo off
Setlocal EnableDelayedExpansion
for %%a in (c,d) do (call :2 %%a)
pause
exit /b
:2
for /r "%~1:" %%c in (*.docx) do (
set "b=%%~dpc"
call :1 "%%c" 
)
exit /b
:1
pushd "!b!"
for /f "delims=" %%k in ('dir /b  *.docx') do (
ren "%%~nxk" "p!h!.docx"
set /a h+=1
)
set h=
exit /b
1
2 / 2 / 0
Регистрация: 09.12.2015
Сообщений: 26
27.04.2017, 12:52  [ТС]
Спасибо за ответ!

Но я проверил первый код но он не сработал( не поменял имя не одного файла( пробовал от админа и пихал сам батник с этим кодом в разные места тоже не помогло(

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

пробовал на Win 7 Макс x32

ХЗ может у меня руки крюки)

Добавлено через 20 часов 44 минуты
Можешь подсказать в чем проблема?
0
 Аватар для ZoOoO
226 / 211 / 70
Регистрация: 09.02.2016
Сообщений: 1,040
27.04.2017, 13:02
Лучший ответ Сообщение было отмечено valli_vasia как решение

Решение

Я не знаю в чем проблема.ТАм путь указан каталога который проверять надо.Может быть Вы полность скопировали код и не менял ипуть,а может быть Вы не поменяли расширение docx на свое.ЧО угодно может быть.Это я про первый код где указана только одна папка.

Добавлено через 8 минут
А во втором коде наверно ошибка есть.Попробуйте так.Надо поставить \ после двоиточая.ФОрум его почему то съедает.
Windows Batch file
1
"%~1:"
Но опять же.Я не пробывал работу второго кода.
1
2 / 2 / 0
Регистрация: 09.12.2015
Сообщений: 26
28.04.2017, 09:19  [ТС]
Спасибо огромное добрый человек! добавил \ и все заработало)
Помоги еще чутка) у нас есть еще сетевые диски если народ будет туда скидывать файлы которые нужно переименовать то что во втором коде дописать чтобы и на них искал?

Добавлено через 1 минуту
Ой еще забыл спросить как добавить во втором коде переименовывание скрытых файлов?

Очень благодарен за оказанную помощь!
0
 Аватар для ZoOoO
226 / 211 / 70
Регистрация: 09.02.2016
Сообщений: 1,040
28.04.2017, 13:11
Цитата Сообщение от valli_vasia Посмотреть сообщение
Ой еще забыл спросить как добавить во втором коде переименовывание скрытых файлов?
По такому же принципу?ф ф1 ф2?А переименовывать ,что скрытые что не скрытые в одно название?
0
4340 / 2130 / 661
Регистрация: 26.04.2015
Сообщений: 6,823
28.04.2017, 16:23
можно так:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
@echo off
for /f "delims=" %%a in ('dir /a-d/b/s "C:\*.xml" "D:\*.xml" "\\serv\fold\*.xml"') do call :# "%%a"
pause& exit
 
:#
 pushd "%~dp1"
  if not exist "db%n%%~x1" (echo f|xcopy /h "%~1" "db%n%%~x1") else (set/a n+=1& goto #)
  del /a /q "%~1"
 popd
exit /b
0
2 / 2 / 0
Регистрация: 09.12.2015
Сообщений: 26
28.04.2017, 21:51  [ТС]
Цитата Сообщение от ZoOoO Посмотреть сообщение
Цитата Сообщение от valli_vasia Посмотреть сообщение
Ой еще забыл спросить как добавить во втором коде переименовывание скрытых файлов?
По такому же принципу?ф ф1 ф2?А переименовывать ,что скрытые что не скрытые в одно название?
Да чтобы просто код учитывал скрытые файлы в папке и менял в тоже название по порядку все.
0
 Аватар для ZoOoO
226 / 211 / 70
Регистрация: 09.02.2016
Сообщений: 1,040
30.04.2017, 11:03
Лучший ответ Сообщение было отмечено valli_vasia как решение

Решение

Тестил на одном каталоге.Все работает.ВОт код на весь диск.Не тестил)Это вместе со скрытыми файлами.
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo off
Setlocal EnableDelayedExpansion
for %%a in (c:\,d:\) do (call :2 "%%a")
pause
exit /b
 
:2
for /f "delims=" %%A in ('dir "%~1*.docx" /a:a /b /s') do (
call :1 "%%~dpA"
)
exit /b
 
:1
if "!b!"=="%~1" (exit /b) else (pushd "%~1"&&for /f "delims=" %%B in ('dir *.docx /a:a /b') do (
echo %%~aB|findstr h&&attrib -h "%%B"&&ren "%%B" "p!m!.docx"&&attrib +h "%%~dpBp!m!.docx"&&set /a m+=1||ren "%%B" "p!m!.docx"&&set /a m+=1
)
)
set "b=%~1" 
set m=
popd
exit /b
Добавлено через 6 минут
чтоб Вас....Работает на весь диск....
1
2 / 2 / 0
Регистрация: 09.12.2015
Сообщений: 26
30.04.2017, 16:57  [ТС]
Цитата Сообщение от ZoOoO Посмотреть сообщение
Тестил на одном каталоге.Все работает.ВОт код на весь диск.Не тестил)Это вместе со скрытыми файлами.

@echo off
Setlocal EnableDelayedExpansion
for %%a in (c:\,d:\) do (call :2 "%%a")
pause
exit /b
:2
for /f "delims=" %%A in ('dir "%~1*.docx" /a:a /b /s') do (
call :1 "%%~dpA"
)
exit /b
:1
if "!b!"=="%~1" (exit /b) else (pushd "%~1"&&for /f "delims=" %%B in ('dir *.docx /a:a /b') do (
echo %%~aB|findstr h&&attrib -h "%%B"&&ren "%%B" "p!m!.docx"&&attrib +h "%%~dpBp!m!.docx"&&set /a m+=1||ren "%%B" "p!m!.docx"&&set /a m+=1
)
)
set "b=%~1"
set m=
popd
exit /b
Спасибо дружище) все работает! очень помог!
0
 Аватар для ZoOoO
226 / 211 / 70
Регистрация: 09.02.2016
Сообщений: 1,040
30.04.2017, 17:18
Цитата Сообщение от valli_vasia Посмотреть сообщение
все работает!
я знаю...
0
2 / 2 / 0
Регистрация: 09.12.2015
Сообщений: 26
30.04.2017, 17:48  [ТС]
А почему не работает другой код вставленный после этого?
То есть создаю батник вот с таким содержимым:

@echo off
Setlocal EnableDelayedExpansion
for %%a in (c:\,d:\) do (call :2 "%%a")
exit /b
:2
for /f "delims=" %%A in ('dir "%~1*.xml" /a:a /b /s') do (
call :1 "%%~dpA"
)
exit /b
:1
if "!b!"=="%~1" (exit /b) else (pushd "%~1"&&for /f "delims=" %%B in ('dir *.xml /a:a /b') do (
echo %%~aB|findstr h&&attrib -h "%%B"&&ren "%%B" "db!m!.xml"&&attrib +h "%%~dpBdb!m!.xml"&&set /a m+=1||ren "%%B" "db!m!.xml"&&set /a m+=1
)
)
set "b=%~1"
set m=
popd
exit /b





@echo off
SetLocal EnableExtensions
call :msg "Все файлы переименованы \nМожете запускать программу"
Exit /B
:msg
chcp 866 >NUL& for /F "delims=" %%a in ("%~1") do chcp 1251 >NUL& call :convert "%%~a"& chcp 866 >NUL& Exit /B
:convert
set "text=%~1"
(@for %%a in ("%text:\n=" "%") do @echo.%%~a) | msg *
Exit /B

И отрабатывает только первый код с переименованием а второй на вывод окна не срабатывает. Хотя по отдельности эти два кода в разных батниках работают на ура.

Чет я совсем нуб(
0
 Аватар для ZoOoO
226 / 211 / 70
Регистрация: 09.02.2016
Сообщений: 1,040
01.05.2017, 08:35
Лучший ответ Сообщение было отмечено valli_vasia как решение

Решение

Попробуй в четвертой строке написать goto 3,а в своем коде уберите первые две строки и вместо них запишите :3
1
2 / 2 / 0
Регистрация: 09.12.2015
Сообщений: 26
01.05.2017, 11:38  [ТС]
Спасибо огромнейшее!!! все заработало идеально!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.05.2017, 11:38
Помогаю со студенческими работами здесь

Вывод информации о существующих жестких дисках
Прошу помогите заранее спасибо

Как вывести информацию о жестких дисках, подключенных к системе, в текстовый файл?
Здравствуйте, как вывести информацию о жестких дисках, подключенных к системе в текстовый файл? И вообще как-то можно вывести, кроме List...

На дисках появляются файлы с расширением exe и pif
Здравствуйте, проблема в том что вирус блокирует всё что связано с названиями антивируса, убивает exe файлы, на дает зайти на сайт Dr.Web и...

OpenFileDialog, отображать только файлы с определенным расширением
вызываю проводник и запоминаю выбранный файл в переменную следующим кодом OpenFileDialog ofd = new OpenFileDialog(); if...

Переименовать все файлы указанного каталога с расширением на заданную букву
Нужно написать скрипт, который бы мог "переименовать все файлы указанного каталога с расширением на заданную букву". Подскажите с чего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru