Batch file 批处理命令拆分字符
我需要像这样分开一根绳子;试着弄到号码 “记录计数/CC_编号=123” 我尝试了很多方法,但都失败了 数字可以更大(4位或更多)或更小Batch file 批处理命令拆分字符,batch-file,regex,Batch File,Regex,我需要像这样分开一根绳子;试着弄到号码 “记录计数/CC_编号=123” 我尝试了很多方法,但都失败了 数字可以更大(4位或更多)或更小 感谢您的帮助。一个选项是按空格分割输入,然后打印/回显第三个令牌: for /f "tokens=3" %%G IN ("Record Count/CC_NUMBER = 123") DO echo %%G 有关更多信息,请参阅。一个选项是按空格分割输入,然后打印/回显第三个标记: for /f "tokens=3" %%G IN ("Record Coun
感谢您的帮助。一个选项是按空格分割输入,然后打印/回显第三个令牌:
for /f "tokens=3" %%G IN ("Record Count/CC_NUMBER = 123") DO echo %%G
有关更多信息,请参阅。一个选项是按空格分割输入,然后打印/回显第三个标记:
for /f "tokens=3" %%G IN ("Record Count/CC_NUMBER = 123") DO echo %%G
有关更多信息,请参阅。如果行长度可以包含任意数量的单词,则按
=
拆分并去除空白,也不关心=
是否在以下内容之前和之后有空格:
@echo off
set "line=this can be any length Record Count/CC_NUMBER = 123"
for /f "tokens=2 delims==" %%i in ("%line%") do set "var=%%i"
echo %var: =%
此外,根据上述类似但较短的方法:
@echo off
for /f "tokens=2 delims==" %%i in ("%line: =%") do echo %%i
如果该行带有空格,并且该数字是第三个标记,如您的示例所示:
@echo off
set "line=Record Count/CC_NUMBER = 123"
for /f "tokens=3" %%i in ("%line%") do echo %%i
如果该行不包含空格,我们将使用=
进行拆分:
@echo off
set "line=Record Count/CC_NUMBER=123"
for /f "tokens=2 delims==" %%i in ("%line%") do echo %%i
如果行长度可以包含任意数量的单词,然后按
=
分割并去除空白,则也不关心=
前后是否有空格:
@echo off
set "line=this can be any length Record Count/CC_NUMBER = 123"
for /f "tokens=2 delims==" %%i in ("%line%") do set "var=%%i"
echo %var: =%
此外,根据上述类似但较短的方法:
@echo off
for /f "tokens=2 delims==" %%i in ("%line: =%") do echo %%i
如果该行带有空格,并且该数字是第三个标记,如您的示例所示:
@echo off
set "line=Record Count/CC_NUMBER = 123"
for /f "tokens=3" %%i in ("%line%") do echo %%i
如果该行不包含空格,我们将使用=
进行拆分:
@echo off
set "line=Record Count/CC_NUMBER=123"
for /f "tokens=2 delims==" %%i in ("%line%") do echo %%i
如果所需的标记是严格的数字标记(在的范围内),则可以使用
set/a
,这将忽略任何空格:
@echo off
set "line=this can be any length Record Count/CC_NUMBER = 123"
for /f "tokens=2 delims==" %%i in ("%line%") do set /a var=%%i
echo "%var%"
如果所需的标记是严格的数字标记(在的范围内),则可以使用
set/a
,这将忽略任何空格:
@echo off
set "line=this can be any length Record Count/CC_NUMBER = 123"
for /f "tokens=2 delims==" %%i in ("%line%") do set /a var=%%i
echo "%var%"
一种可能的方法是使用标准:
set“STR=记录计数/CC\u编号=123”
对于(%STR%)中的%%I,请设置“VAL=%%I”
回声/%VAL%
每个空格以及=
-符号都被视为令牌分隔符,每个令牌都由for
循环处理,最后一次迭代将数值分配给变量
当字符串包含以下任一字符时,此操作可能会失败:
*
,?
,
,“
,^
,,,(
,)
,,)
一种可能的方法是使用标准:
set“STR=记录计数/CC\u编号=123”
对于(%STR%)中的%%I,请设置“VAL=%%I”
回声/%VAL%
每个空格以及=
-符号都被视为令牌分隔符,每个令牌都由for
循环处理,最后一次迭代将数值分配给变量
当字符串包含以下任一字符时,此操作可能会失败:*
,?
,
,“
,^
,,,(
,)
下面是另一个解决方案,它使用powershell中的正则表达式从TestFile.txt文件的字符串内容中提取数字
@echo关闭&color 0A
标题使用Powershell中的正则表达式从字符串中提取数字
设置“InputFile=TestFile.txt”
Set psCmd=“&{$content=Get content-路径“%InputFile%”;[regex]$regex='\d+';$regex.Matches($content.value}”
呼叫:RunPS%psCmd%Number
回显提取的数字为N=%Number%
暂停和退出
::----------------------------------------------------------------------
:RunPS
对于(`Powershell%1`)中的/F“usebackq令牌=*”%%i,请设置“%2=%%i”
后藤:eof
::结束:RunPS函数
::----------------------------------------------------------------------
下面是另一个解决方案,它使用powershell中的regex从TestFile.txt文件的字符串内容中提取数字
@echo关闭&color 0A
标题使用Powershell中的正则表达式从字符串中提取数字
设置“InputFile=TestFile.txt”
Set psCmd=“&{$content=Get content-路径“%InputFile%”;[regex]$regex='\d+';$regex.Matches($content.value}”
呼叫:RunPS%psCmd%Number
回显提取的数字为N=%Number%
暂停和退出
::----------------------------------------------------------------------
:RunPS
对于(`Powershell%1`)中的/F“usebackq令牌=*”%%i,请设置“%2=%%i”
后藤:eof
::结束:RunPS函数
::----------------------------------------------------------------------
这可以通过使用echo
命令解决,与cmd/u
结合使用Find+FindSTR+regex
在循环中删除字符串中的非数字
- 所有字符的输出方式如下:U I C O D E
- Unicode输出布局的主要特点是它们之间在
cmd/u echo your string
中的空格
- 当一个接一个地输出字符时,您不必担心/使用分隔符的,
查找字符串
和正则表达式
在这个输出过程中只获取数字。。。
使用For
逐个循环字符,以便在中过滤字符串
输出并通过查找/v”“
删除空格,然后使用另一个过滤器FindSTR
,通过在FindSTR
中添加,仅获取数字,并将递增的循环输出保存到变量中
循环输出变量_str!在unicode筛选器空间中获取数字:
@echo off&&setlocal EnableDelayedExpansion
设置“\u str=记录计数/CC\u编号=01234”
对于/f%%n in('cmd/u/c echo=“!\u str!”^ find/v”“^ findstr[0-9]
“)do echo=%%n
::echo=%%n==循环输出中的一个接一个字符:
:: ---------------------------------------------------------