Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Добавление имени папки в имя файлов, которые лежат в этой папке

Ответить
Настройки темы
CMD/BAT - Добавление имени папки в имя файлов, которые лежат в этой папке

Новый участник


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

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


Добрый день, нужна помощь. Написал тут не много, а дальше трабл. Как сделать так чтоб при нажатии несколько раз на бат имя папки в файле не дублировалось, а лишь менялось если имя папки изменилось?


Код: Выделить весь код
rem функция для добавления имени папки к имени файла
:Recur
for /R %p% %%b in ("*.dwg") do (
for /f "delims=\ tokens=1,2,3,4,5,6" %%A in ('echo %%b') do (rename "%%b" "%%~F %%~nb.dwg")
                                )
for /R %p% %%b in ("*.xlsx") do (
for /f "delims=\ tokens=1,2,3,4,5,6" %%A in ('echo %%b') do (rename "%%b" "%%~F %%~nb.xlsx")
                                )
exit /B

Отправлено: 11:36, 26-06-2018

 

Ветеран


Contributor


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

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


sway38,
Цитата sway38:
Почему то при добавлении имени папки к имени файла получается Имяпапки#Имяфайла. А можно сделать так чтобы не нужно было заходить в батник и менять путь ручками, а просто кинул батник в папку с файлами которые нужно исправить и он сам брал имя папки в которой лежит? »
Пожалуйста.
Код: Выделить весь код
@Echo Off
rem Set "BoxIn=Z:\Box_Arc\xxxx"

Set "BoxIn=%~dp0"
If "%BoxIn:~-1%"=="\" Set "BoxIn=%BoxIn:~0,-1%"

Set "Mask="*.dwg" "*.xlsx""

For /R "%BoxIn%" %%f In (%Mask%) Do Call :DirFile "%BoxIn%" "%%f" "%%~nxf" 
GoTo :Eof

:DirFile
	For /F "tokens=1* delims=#" %%i IN (%3) DO (
		If "%%j"=="" Ren %2 "%~nx1#%~3" &&Exit /B 0
		If /I "%%i#"=="%~nx1#" Exit /B 0
		If /I Not "%%i#"=="%~nx1#"  Ren %2 "%~nx1#%%j" &&Exit /B 0
	)
Exit /B 1
Я решил, что пробел - слишком часто встречается в имени и определить, добавлено ли к имени файла имя папки вряд ли представляется возможным, если имя папки прибавлять через пробел. Поэтому поставил #.
Слегка подправил цикл для надёжности.

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


Отправлено: 19:14, 26-06-2018 | #11



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

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


Новый участник


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

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


Цитата megaloman:
Я решил, что пробел - слишком часто встречается в имени и определить, добавлено ли к имени файла имя папки вряд ли представляется возможным, если имя папки прибавлять через пробел. Поэтому поставил #.
Слегка подправил цикл для надёжности. »
В имени папки не будет пробелов, а вот имя файла должно начинаться с пробела Итоговый вид должен быть Имяпапки - Имя, где " - Имяфайла". # можно его убрать совсем как то из имени файла?

Последний раз редактировалось sway38, 26-06-2018 в 20:29.


Отправлено: 19:45, 26-06-2018 | #12


Ветеран


Contributor


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

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


Цитата megaloman:
2. В именах папок и непереименованных файлов возможны пробелы? »
Например: тра ля ля.dwg
тра это имя папки, или кусок имени непереименованного файла?
Надо через пробел - извольте. Криво отработает пробел в имени файла - я не виноват
Код: Выделить весь код
@Echo Off
Set "Delim= "

Set "BoxIn=%~dp0"
If "%BoxIn:~-1%"=="\" Set "BoxIn=%BoxIn:~0,-1%"

Set "Mask="*.dwg" "*.xlsx""

For /R "%BoxIn%" %%f In (%Mask%) Do Call :DirFile "%BoxIn%" "%%f" "%%~nxf" 
GoTo :Eof

:DirFile
	For /F "tokens=1* delims=%Delim%" %%i IN (%3) DO (
		If "%%j"=="" Ren %2 "%~nx1%Delim%%~3" &&Exit /B 0
		If /I "%%i%Delim%"=="%~nx1%Delim%" Exit /B 0
		If /I Not "%%i%Delim%"=="%~nx1%Delim%"  Ren %2 "%~nx1%Delim%%%j" &&Exit /B 0
	)
Exit /B 1

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

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

Отправлено: 22:01, 26-06-2018 | #13


Ветеран


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

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


Цитата sway38:
Можно прописать для каких типов файлов в папке нужно переименование? .dwg, .xlsx »
да
Код: Выделить весь код
@echo off
set "sh=-"
set "d=%~dp0"

setlocal enabledelayedexpansion
 for %%a in ("%d:~0,-1%.") do set "np=%%~nxa"
 for /f "delims=" %%f in ('dir /a-d/b/s "*.xlsx" "*.dwg"^|find /v "%~f0"') do set "nf=%%f"& echo "%%f"|>nul find "%sh%" && ren "%%f" "%np%%sh%!nf:*%sh%=!" || ren "%%f" "%np%%sh%%%~nxf"
endlocal
exit

Отправлено: 23:00, 26-06-2018 | #14


Новый участник


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

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


Цитата megaloman:
Надо через пробел - извольте. Криво отработает пробел в имени файла - я не виноват »
Вот то что надо! Спасибо

Отправлено: 04:49, 27-06-2018 | #15


Новый участник


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

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


А можно еще в этот батник одну функцию дописать?
Нужно чтобы в папке где лежит батник он находил файл ***** - Параметры.xlsx узнавал его путь и вставлял его в первую строку файла config.cfg, лежащего здесь же в папке.
https://b.radikal.ru/b25/1806/5f/560e3771913e.jpg

Отправлено: 05:09, 27-06-2018 | #16



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Добавление имени папки в имя файлов, которые лежат в этой папке

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Добавление названия папки к имени файлов. Viktor99 Скриптовые языки администрирования Windows 7 16-11-2017 17:56
VBS/WSH/JS - Копирование файлов в папке и ее подпапках которые не старше 5минут gremlintv2 Скриптовые языки администрирования Windows 1 30-03-2016 14:30
CMD/BAT - удаление файлов которые содержаться в папке 1 из 2рой папки PunkRediska Скриптовые языки администрирования Windows 1 31-05-2013 19:53
CMD/BAT - [решено] Добавление к имени файла имя папки Arsenik77 Скриптовые языки администрирования Windows 12 13-08-2011 20:28
Как переименовать имя аккаунта в XP с изменением имени его папки и других файлов. Alikber Microsoft Windows 2000/XP 4 06-03-2006 00:15




 
Переход