Как добавить имя родительской директории к имени файла?

Доброго дня, подскажите:
Есть структура папок: 2016-бла1, бла2, бла3 - ААА, БББ
В каждой из директорий есть файлы типа:
Б010101 интересно.doc
Б010201 очень интересно.doc
Б010302 не очень интересно.doc

Мне надо создать в вышестоящих директориях бла1, бла 2, бла3 ПАПКИ с именами файлов. И туда положить эти папки.

Что я нашел, написал, нагуглил:

@echo off
echo "Переименовали файлы:" > C:\log.log

FOR /R "C:\БУА" %%G in (.) DO (
	Pushd %%G


	for %%A IN (*.doc) DO 	(
		for /f "tokens=1* delims= " %%B IN ("%%~nA") DO (
			echo Было:"%%~A" Стало:"%%~B" Путь "%%G"
			set z=%%G
			set str2=%z:~-4%
			echo %DATE%-%TIME% Было: "%%~A" Стало: "%%~B" Путь: "%%G" Часть пути: %z% >> C:\log.log
			If Not Exist "..\%%~B" Md "..\%%~B" >nul 2>&1
			IF Not Exist "..\%%~B\%%A" ( xcopy /y "%%A" "..\%%~B\" ) ELSE (
				

                                @rem for %%i in ( "%%G" ) do ( set name="%%~nxi" )
				@rem echo ПОЧЕМУ %name%
				@rem ren "..\%%~B\%%A" "..\%%~B\%%A%name%"
				@rem xcopy /y "%%A" "..\%%~B\"


			)
 
			)
		)
	Popd
)
pause


В участке кода где написано ИНАЧЕ, я смотрю, файлы бывает совпадают полностью по именам из бла1 и бла2, мне надо добавить к имени файла имя родительской директории, чтоб стало Б010101 интересно_БЛА1.doc и Б010101 интересно_БЛА2.doc

Тогда не нужен будет условный оператор.

Подскажите - как мне это сделать??
  • Вопрос задан
  • 546 просмотров
Решения вопроса 1
jesterOK
@jesterOK Автор вопроса
Вкладываю решение. Товарищу выше спасибо за переменные %% и !! и остальное.

@echo off
rem - ПУТЬ МЕНЯЕМ В 3 МЕСТАХ!!!
set RoadWay=C:\test
echo "Пошла ЖАРА:" > %RoadWay%\log.log
SetLocal EnableExtensions EnableDelayedExpansion

FOR /R "%RoadWay%\" %%G in (.) DO (
	Pushd %%G

@rem Надо doc потому что учитывается doc и docx - по шаблону

	for %%A IN (*.doc) DO 	(
		set FullPath=%%~dpA
		set cut=!FullPath:~0,-1!
		for %%j in (!cut!) do set ParentDir=%%~nxj
		echo !ParentDir!
		
		for /f "tokens=1* delims= " %%B IN ("%%~nA") DO (
			
			If Not Exist "..\%%~B" Md "..\%%~B" >nul 2>&1
			IF Not Exist "..\%%~B\%%A" ( xcopy /K /y "%%A" "..\%%~B\" 
			echo %DATE%-%TIME% Скопировали "%%~A" в "..\%%~B\%%~A" >> %RoadWay%\log.log
			
			) ELSE (

					@echo Одинаковый файл - %%A
					@echo Переименовали - %%~nA_!ParentDir!%%~xA

					ren "%%A" "%%~nA_!ParentDir!%%~xA"
					xcopy /K /y "%%~nA_!ParentDir!%%~xA" "..\%%~B\"
					echo %DATE%-%TIME% Скопировали "%%~nA_!ParentDir!%%~xA" в "..\%%~B\%%~nA_!ParentDir!%%~xA" >> %RoadWay%\log.log

			)
 
			)
		)
	Popd
)
pause
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы