разрешить только уникальные записи в массиве Windows - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь написать пакетный файл Windows для получения ниже ВЫХОДА для данного ВХОДА

ВХОДА:

//Dev-420/PAVAN/src/main/java/test/abcd/mnop/HealthCheck.java - edit change 1111111
 //Dev-420/PAVAN/src/main/java/test/abcd/mnop/HealthStatus.java - edit change 1111111
 //Dev-420/PAVAN/src/main/java/test/xyz/Relations.java - edit change 1111112

ВЫХОДА:

массив CHANGELIST должен содержать только уникальныйзначения

[1111111, 1111112]

теперь его значение равно [1111111,1111111,1111112]

Ниже приведен скрипт, который я использую.Я не нашел способ сделать это.

@echo off
set "File2Read=files_list.tmp"
set "FILENAME="
setlocal EnableDelayedExpansion
set /a count=0
set "BINARY_FILENAME="
set "replaceBinaryPath=target/classes/"
set "basePath=//ATT/Dev-420/PAVAN/src/main/java/"
for /f "delims=" %%a in ('Type "%File2Read%"') do (
    set "line=%%a"
    for /f "tokens=1,2,3,4,5 delims= " %%a in ("!line!") do (
      set FILENAME=%%a
      set CHANGELIST=%%e
    )

    set "BINARY_FILENAME=!FILENAME:%basePath%=%replaceBinaryPath%!"
    if not !FILENAME!==!BINARY_FILENAME! (
        set /a count+=1
        set "CHANGELISTS[!count!]=!CHANGELIST!"
    )
)
endLocal

Пожалуйста, помогите мне каким-нибудь способом, чтобы иметь возможность вставлять только уникальные значения в массив CHANGELISTS.

Буду очень признателен за вашу помощь здесь!

1 Ответ

0 голосов
/ 26 сентября 2018

Гораздо проще тестировать / отлаживать скрипты, когда вы избегаете блоков многострочного кода.Я удалил лишнюю петлю и убрал лишние биты.

@setlocal EnableExtensions EnableDelayedExpansion
@rem echo off
@set "_fileToRead=files_list.tmp"
@for /f "tokens=1,2,3,4,5" %%I in (%_fileToRead%) do @call :DoIt "%%I" %%M

@exit /b 0

:Append
@if "" equ "%_changeList%" (@set _changeList=%1) else (@set _changeList=%_changeList% %1)
@exit /b 0

:DoIt
@call :SetFound %2
@if %_found% equ false @call :Append %2
@rem This is where you do something with the path/file in %1
@echo %~1 %2
@echo %_changeList%
@exit /b 0

:SetFound
@set _found=false
@for /f "tokens=1" %%a in ("%_changeList%") do @if %%a equ %1 @set _found=true
@exit /b 0

Создает этот вывод с вашими тестовыми данными:

//Dev-420/PAVAN/src/main/java/test/abcd/mnop/HealthCheck.java 1111111
1111111
//Dev-420/PAVAN/src/main/java/test/abcd/mnop/HealthStatus.java 1111111
1111111
//Dev-420/PAVAN/src/main/java/test/xyz/Relations.java 1111112
1111111 1111112

Это должно быть достаточно просто для вас, чтобы построить это.

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