Как объединить два значения переменных и использовать в условии if - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь добавить относительный путь к файлу в корневой путь, чтобы получить полный путь к файлу.Тот же файл, я пытаюсь проверить, если существует, затем пытаюсь переименовать его в сегодняшнюю дату.Я использую приведенный ниже код.При выводе сцепленных значений в out1.txt я получаю правильные значения.Но в случае, если я получаю синтаксическую ошибку при объединении значений двух переменных здесь.Я думаю, что я делаю что-то не так Может кто-нибудь, пожалуйста, помогите.Большое спасибо.

echo on


setlocal enabledelayedexpansion
set rootPath=C:\Endeca




rem copying to index 
set indexTarget=%rootPath%
set IndexFilePath=Tiffany\ENI\Endeca
set MDEXFilePath=Tiffany\ENE\Endeca

cd %IndexFilePath%
set "parentfolder=%CD%"
for /r . %%g in (*.*) do (
  set "completepath=%%g"
  set relativePath=!completepath:%parentfolder%=!  
  echo !rootPath!!relativePath! >> out1.txt
  if exist !rootPath!!relativePath! 
 for /f "tokens=1-5 delims=/ " %%a in ("%date%") do rename "!%rootPath%%relativePath%!" %rootPath%%relativePath%.%%b-%%c-%%d

)

1 Ответ

1 голос
/ 19 сентября 2019

Вот полностью непроверенное переписывание вашего кода, основанное на моем понимании того, что вы пытаетесь сделать.

Основная проблема, с которой я столкнулся, заключалась в том, что ваше условие 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
)

Вы заметите, что я переместил цикл , предназначенный для получения строки даты, из ее вложенной позицииближе к началу вашего кода.Я предположил, что это должно быть в формате YYYY-mm-DD, вам нужно настроить %%A-%%B-%%C в строке 6, если это предположение было неверным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...