Вот полностью непроверенное переписывание вашего кода, основанное на моем понимании того, что вы пытаетесь сделать.
Основная проблема, с которой я столкнулся, заключалась в том, что ваше условие if
не использовало скобокчтобы выделить команды, специфичные для него.
@Echo Off
SetLocal DisableDelaydExpansion
Set "rootPath=C:\Endeca"
Set "dStamp="
For /F "Tokens=1-3Delims=/ " %%A In ('RoboCopy/NJH /L "\|" Null'
) Do If Not Defined dStamp Set "dStamp=%%A-%%B-%%C"
Rem Copying to index
Set "indexTarget=%rootPath%"
Set "IndexFilePath=Tiffany\ENI\Endeca"
Set "MDEXFilePath=Tiffany\ENE\Endeca"
CD "%IndexFilePath%"
Set "parentfolder=%CD%"
For /R %%A In (*) Do (
Set "completepath=%%~nA"
SetLocal EnableDelayedExpansion
Set "relativePath=!completepath:%parentfolder%=!"
(Echo %rootPath%!relativePath!%%~xA)>>"out1.txt"
If Exist "%rootPath%!relativePath!%%~xA" (
Ren "%rootPath%!relativePath!%%~xA" "%rootPath%!relativePath!.%dStamp%%%~xA"
)
EndLocal
)
Вы заметите, что я переместил цикл for , предназначенный для получения строки даты, из ее вложенной позицииближе к началу вашего кода.Я предположил, что это должно быть в формате YYYY-mm-DD
, вам нужно настроить %%A-%%B-%%C
в строке 6
, если это предположение было неверным.