Войти

Показать полную графическую версию : [решено] Создание БАТ для переименования файла по определённой схеме


MTIsur
15-04-2019, 15:22
Возможно ли сделать BAT для решения следующей задачи?
Буду крайне признателен, если кто-нибудь поможет.

Требуется:

Задать путь к папке, в которой нужно осуществить следующую задачу – скопировать название
каждой папки и переименовать файл с заданным расширением (пусть будет к примеру - *.EXE),
лежащий в каждой папке на название папки в которой лежит файл.

То что имеем изначально:



Файл.ЕХЕ
Файл.PDF
+другие файлы

Файл.ЕХЕ
Файл.PDF
+другие файлы

Файл.ЕХЕ
Файл.PDF
+другие файлы
[и т.д.]

То, что требуется получить в итоге:



Map1Name.ЕХЕ
Файл.PDF
+другие файлы

Map2Name.ЕХЕ
Файл.PDF
+другие файлы

Map3Name_DD.ЕХЕ
Файл.PDF
+другие файлы
[и т.д.]

alpap
15-04-2019, 15:41
MTIsur, а если в папке несколько файлов с расширением exe ?
так, например, переименует один такой в папке (примерно первый по алфавиту, т.е. относительно рандомно), вывод ошибки специально заглушил

@echo off
set "d=C:\Papka"
set "ext=exe"

for /f "delims=" %%d in ('dir /ad/b/s "%d%"') do (
pushd "%%d"
for /f "delims=" %%f in ('dir /a-d/b/s "*.%ext%"') do 2>nul ren "%%f" "%%~nxd%%~xf"
popd
)
pause& exit

MTIsur
15-04-2019, 15:59
alpap, спасибо огромное! Всё работает как нужно.


В моём случае в 99% будет только один файл с данным расширением в каждой папке. Если допустить, что будет всё же несколько, то достаточно того, что переименует только один файл по данному формату (любой).
Остальные файлы с данным расширением можно удалить за ненадобностью.

megaloman
15-04-2019, 20:24
MTIsur, До кучиОстальные файлы с данным расширением можно удалить за ненадобностью. »@Echo Off
cls
Set "Fold=Z:\Box_In"
Set "Mask=*.exe"

For /f "delims=" %%d in ('2^>nul Dir /A:D /B /S "%Fold%\"') Do (
For /f "delims=" %%f in ('2^>nul Dir /A:-D /B /O:-D "%%d\%Mask%"') Do (
If Exist "%%d\%%~nxd%%~xf" Del "%%d\%%f"
If Not Exist "%%d\%%~nxd%%~xf" Ren "%%d\%%f" "%%~nxd%%~xf"
)
)
Pause
GoTo :Eof




© OSzone.net 2001-2012