Вот пример, основанный на моем комментарии:
@Echo Off
SetLocal EnableDelayedExpansion
Rem This Undefines the variables
For %%A In (PKG BRN UPD) Do Set "%%A="
Rem This will propagate the variables
For /F "Tokens=1,5,7 Delims=/" %%A In (
'FindStr /I "\/release/.*\.zip$" "changed.txt"'
) Do (
If Defined BRN (Set "BRN=!BRN!,%%A") Else Set "BRN=%%A"
If Defined UPD (Set "UPD=!UPD!,%%B") Else Set "UPD=%%B"
If Defined PKG (Set "PKG=!PKG!,%%C") Else Set "PKG=%%C"
)
Rem This will show the variables with their content
For %%A In (PKG BRN UPD) Do Set %%A 2>Nul
Pause
[Редактировать /]
В результате acronicks комментариев, вот версия, которая должна быть достаточной в случае файла, использующего LF
окончания строки или не заканчивающегося стандартным CRLF
окончанием. Также изменяются имена переменных в соответствии с именами в вопросе.
@Echo Off
SetLocal EnableDelayedExpansion
Rem This Undefines the variables
For %%A In (PACKAGE BRANCH UPDATEFOLDER) Do Set "%%A="
Rem This will propagate the variables
For /F "Tokens=1,5,7 Delims=/" %%A In (
'More "changed.txt"^|FindStr /I "\/release/.*\.zip$"'
) Do (
If Defined BRANCH (Set "BRANCH=!BRANCH!,%%A") Else Set "BRANCH=%%A"
If Defined UPDATEFOLDER (Set "UPDATEFOLDER=!UPDATEFOLDER!,%%B") Else Set "UPDATEFOLDER=%%B"
If Defined PACKAGE (Set "PACKAGE=!PACKAGE!,%%C") Else Set "PACKAGE=%%C"
)
Rem This will show the variables with their content
Echo PACKAGE is %PACKAGE%
Echo BRANCH is %BRANCH%
Echo UPDATEFOLDER is %UPDATEFOLDER%
Pause
[Edit2 /]
Вот небольшая модификация, позволяющая сначала сохранить команду в переменной, из-за комментария .
@Echo Off
SetLocal EnableDelayedExpansion
Rem This Undefines the variables
For %%A In (PACKAGE BRANCH UPDATEFOLDER) Do Set "%%A="
Rem This will propagate the variables
Set "a=More "changed.txt"|FindStr /I "\/release/.*\.zip$""
For /F "Tokens=1,5,7 Delims=/" %%A In ('"%a%"') Do (
If Defined BRANCH (Set "BRANCH=!BRANCH!,%%A") Else Set "BRANCH=%%A"
If Defined UPDATEFOLDER (Set "UPDATEFOLDER=!UPDATEFOLDER!,%%B") Else Set "UPDATEFOLDER=%%B"
If Defined PACKAGE (Set "PACKAGE=!PACKAGE!,%%C") Else Set "PACKAGE=%%C"
)
Rem This will show the variables with their content
Echo PACKAGE is %PACKAGE%
Echo BRANCH is %BRANCH%
Echo UPDATEFOLDER is %UPDATEFOLDER%
Pause