Batch file 可以包含字符串和/或数字的变量

Batch file 可以包含字符串和/或数字的变量,batch-file,cmd,Batch File,Cmd,我有一个可以包含字符串和/或数字的变量,但在某些情况下,我必须删除数字字符。我基本上是这样的 if defined ARG2 ( for %%b in (0 1 2 3 4 5 6 7 8 9) do set ARG2=!ARG2:%%b=! ) 它几乎适用于所有情况,但存在一个问题。如果ARG2只包含数字字符,则将ARG2值更改为类似9=。如何解决此问题,或者是否有更好的方法从变量中删除数字字符?当输入888时,for循环将达到8并从字符串中删除所有字符。因此,您有一个空变量。因此,

我有一个可以包含字符串和/或数字的变量,但在某些情况下,我必须删除数字字符。我基本上是这样的

if defined ARG2 (
    for %%b in (0 1 2 3 4 5 6 7 8 9) do set ARG2=!ARG2:%%b=!
)
它几乎适用于所有情况,但存在一个问题。如果ARG2只包含数字字符,则将ARG2值更改为类似9=。如何解决此问题,或者是否有更好的方法从变量中删除数字字符?

当输入888时,for循环将达到8并从字符串中删除所有字符。因此,您有一个空变量。因此,当您尝试删除9时,它扩展为空,因此由于某些原因,不能完全确定为什么CMD不考虑字符串操作,只需显示666,将输出7=等等。要解决此问题,只需添加一个检查,查看ARG2是否为空

if defined ARG2 (
    for %%b in (0 1 2 3 4 5 6 7 8 9) do if "!ARG2!"=="" ( goto :break ) else set ARG2=!ARG2:%%b=!
)
:break
如果ARG2扩展为空,这将转到:break标签


这里的答案——应该能更好地解释原因。

我不能重复这个问题。为了让ARG2扩展到9=,您提供了什么输入?