如何准确选择数字的一部分作为简单字符并在 CMD 中排除所有其余部分?
Posted
技术标签:
【中文标题】如何准确选择数字的一部分作为简单字符并在 CMD 中排除所有其余部分?【英文标题】:how to select exactly part of a number as a simple character and exclude all the rest in CMD? 【发布时间】:2021-04-15 22:46:01 【问题描述】:我将在下面解释我想用 CMD 做什么
我有这个文件名:
set "File=0119315314"
使用 2 in 2,我想将文件名分隔为这一行:01 19 31 53 14
这里的问题是数字 31 因为“53”和“14” 当它加入时,我们有“5314”并将“31”的镜子看成“5314”
我试过了:
set "New=%File:31=%"
当我排除数字“31”时,我也会烧掉字符“5314” 现在,我的序列没有得到“53”和“14”:01 19 31 53 14
你不明白吗?请问,怎么解决?有可能吗?
【问题讨论】:
完全不理解你的解释。不知道你说的刻录和镜像是什么意思。如果要捕获每两个字符,请使用现有变量的子字符串。set "var1=%File:~0,2%"
和 set "var2=%File:~2,2%"
等等等等……
非常感谢!它更容易!现在我做了一个循环来生成下一个数字并将两个字符串用作一个字符串,我使用了 setlocal。它解决了!谢谢!!!
【参考方案1】:
如果我理解正确,也许您正在寻找这样的东西:
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
Set "f=0119315314"
Set "i=0"
For /F Delims^=^ EOL^= %%G In (
'%__AppDir__%cmd.exe /U/D/C Echo(!f!^|%__AppDir__%find.exe /V ""') Do (
Set /A "i+=1, m=i%%2"
If !m! Equ 0 (Set "s=!s!%%G ") Else Set "s=!s!%%G")
If %m% Equ 0 Set "s=%s:~,-1%"
Echo(%s%
Pause
预期结果:
01 19 31 53 14
或者您可能正在寻找更简单的东西:
@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion
Set "f=0119315314"
For /L %%G In (0,2,20) Do If Not "!f:~%%G,2!" == "" Echo(!f:~%%G,2!
Pause
预期输出:
01
19
31
53
14
在本例中,如果您打算使用超过 20 个字符的字符串,可以增加 20
。
【讨论】:
【参考方案2】:我读到 "with 2 in 2,我想将文件名分隔为这一行:01 19 31 53 14" 行,因为其余的都是废话......
@echo off
setlocal
set "File=0119315314"
set "new="
:next
set "new=%new% %file:~0,2%" & set "file=%file:~2%" & if defined file goto next
echo %new:~1%
输出:
01 19 31 53 14
此方法可以分隔任意数量的数字对;只需将它们放在“文件”变量中...
【讨论】:
以上是关于如何准确选择数字的一部分作为简单字符并在 CMD 中排除所有其余部分?的主要内容,如果未能解决你的问题,请参考以下文章
如何从整数中删除最小值并在不使用字符串的情况下返回其余数字[关闭]
如何选择包含特定子字符串的单词列表作为 SQL 查询(oracle)的一部分?