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

    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
    Ответ написан
    Комментировать