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

时间:2014-05-11 22:28:34

标签: 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=之类的值。我该如何解决这个问题,还是有更好的方法从变量中删除数字字符?

1 个答案:

答案 0 :(得分:0)

输入888时,for循环将达到8并删除字符串中的所有字符。因此,您有一个空变量。因此,当您尝试删除9时,它会扩展为空,然后由于某种原因(不完全确定原因)cmd不考虑字符串操作,只显示它(类似666将输出{{1} } 等等)。要解决此问题,您只需添加一项检查,以查看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 扩展为空,则会转到:break标签。

这里的答案 - How does the Windows Command Interpreter (CMD.EXE) parse scripts? - 应该更好地解释原因。