Dor*_*rga 1 windows cmd batch-file
我不是 CMD Windows 脚本专家。
我正在尝试使用 set 命令提取版本号(出于内部原因我必须使用 set 命令)。
这是我在脚本中写的内容:
REM Branch is my input
set Branch=7.8.1
set "MAJOR=%Branch:.=" & set "MINOR=%%Branch:.=" & set "PATCH=%"
echo MAJOR = %MAJOR%
echo MINOR = %MINOR%
echo PATCH = %PATCH%
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
set "MAJOR=7" & set "MINOR=8" & set "MINOR=17" & set "PATCH=8" & set "PATCH=1"
MAJOR = 7
MINOR = 17
PATCH = 1
Run Code Online (Sandbox Code Playgroud)
我想要得到的是这样的:
>set "MAJOR=7" & set "MINOR=8" & set "PATCH=1"
>MAJOR = 7
>MINOR = 8
>PATCH = 1
Run Code Online (Sandbox Code Playgroud)
这是一个想法的一个小改编(最初在此外部站点线程中创建,并已在评论中明确链接) :
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
Set "Branch=7.8.1"
Set "Vars=Major Minor Patch" & Set "p=%%"
Set "v=%Vars: =" & Set "s=!Branch:*.=!" & Call Set "!v!=!p!Branch:.!s!=!p!" & Set "Branch=!s!" & Set "v=%" & Set "!v!=!s!"
Echo Major: %Major%, Minor: %Minor%, Patch: %Patch%
Pause
Run Code Online (Sandbox Code Playgroud)
这是另一种也许更简单的方法:
@echo off
setlocal EnableDelayedExpansion
set "Branch=7.8.1"
set "MAJOR=%Branch:.=" & (if not defined MINOR (set "v=MINOR") else set "v=PATCH") & set "!v!=%"
echo MAJOR = %MAJOR%
echo MINOR = %MINOR%
echo PATCH = %PATCH%
Run Code Online (Sandbox Code Playgroud)
编辑 2021/12/20: 添加新方法
我认为这是最简单的方法:
@echo off
setlocal EnableDelayedExpansion
set "Branch=7.8.1"
set "MAJOR=%Branch:.=" & set "MINOR=!PATCH!" & set "PATCH=%"
echo MAJOR = %MAJOR%
echo MINOR = %MINOR%
echo PATCH = %PATCH%
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |