如何 select 一个数字的一​​部分作为一个简单的字符,并在 CMD 中排除所有其余部分?

how to select exactly part of a number as a simple character and exclude all the rest in CMD?

我会在下面解释我想用CMD做什么

我有这个文件名:

set "File=0119315314"

2 合 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

你明白了吗?请问,如何解决?可能吗?

如果我没理解错的话,也许你正在寻找这样的东西:

@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

我读到 "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

此方法可以分隔任意数量的数字对;只需将它们放在“文件”变量中...