是否有可能分裂' cmd中set / p命令的值?

时间:2017-05-13 23:02:56

标签: batch-file cmd

CMD中是否有可能 partialy "launchBrowser": { "enabled": true, "args": "${auto-detect-url}", "windows": { "command": "cmd.exe", "args": "/C start ${auto-detect-url}" }, "osx": { "command": "open" }, "linux": { "command": "xdg-open" } }, 命令中提取字符串的值并将每个部分分配给其他一些不同的变量?我的意思是,让我们说我们使用set /p var=命令来读取用户的一些输入,并且用户输入我是Joe 。所以,现在变量set /p var=。可以分配"我是" %var%的内容到另一个变量和" Joe"还有另一个内容?

1 个答案:

答案 0 :(得分:0)

这一切都取决于您对给定输入的期望。您可以使用子字符串来减去输入字符串的固定部分,如下所示:

:: part1 = I am
set "part1=%var:~0,4%"

:: part2 = Joe
set "part2=%var:~5,7%"

但是如果输入字符串的长度小于5,则变量 part2 将是未定义的。好像你没有给变量任何值。

:: Like this
set part2=

获取输入字符串部分的另一种方法是对其进行标记。像这样:

for /f "tokens=1-3" %%a in ("%var%") do (
  set "part1=%%a %%b"
  set "part2=%%c"
)

但是你应该注意这种方法存在一些问题。首先,由于输入是由用户提供的,它可能包含保留的shell字符以及双引号,这样实际上可能会破坏代码。其次,必须预先定义要使用的令牌数量以及如何处理它们。