Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批处理命令拆分字符_Batch File_Regex - Fatal编程技术网

Batch file 批处理命令拆分字符

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

我需要像这样分开一根绳子;试着弄到号码

“记录计数/CC_编号=123”

我尝试了很多方法,但都失败了

数字可以更大(4位或更多)或更小


感谢您的帮助。

一个选项是按空格分割输入,然后打印/回显第三个令牌:

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==循环输出中的一个接一个字符:
:: ---------------------------------------------------------