batch-file - 读取批处理文件中参数的每个字符

标签 batch-file arguments parameter-passing command-line-arguments

cmd中的示例输入:

test.bat /p 1,3,4

预期结果:
1
3
4

到目前为止我的代码:
@echo off
set arg = %1
set var = %2
if (%1)==(/p) (
... need code that will read and print each character of var
)

最佳答案

您的问题存在潜在问题。如果 test.bat 是:

@echo %1%

然后
test 1,2,3

打印:
1

因为,在这种情况下,逗号被视为参数分隔符。

所以你要么需要用引号引起来:
test "1,2,3"

或者使用不同的内部分隔符:
test 1:2:3    

除非您希望将零件放置在 %2、%3 等中,在这种情况下,您的问题可以通过简单使用 SHIFT 来解决。 .

对于我的解决方案,我选择在组参数“1,2,3”周围使用引号(尽管通过更改 delims=, 来指定要使用的字符,这很容易适应不同的分隔符)。
@echo off
setlocal ENABLEDELAYEDEXPANSION ENABLEEXTENSIONS

set args=%~2

if "%1"=="/p" (
:NextToken
    for /F "usebackq tokens=1* delims=," %%f in ('!args!') do (
        echo %%f
        set args=%%g
    )
    if defined args goto NextToken
)

像这样调用:
readch.bat /p "1,2,3"
%~2用于删除引号。
FOR语句解析 args,将第一个标记放入 %f以及 %g 中该行的其余部分.

`goto NextToken' 行循环直到没有更多的标记。

关于batch-file - 读取批处理文件中参数的每个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13718351/

相关文章:

c++ - 如何编写接受无限参数的函数?

c++ - C、编译错误和指针

ios - Int 参数传入方法时变为 0

batch-file - ffmpeg 为视频的每一秒覆盖相同的文件

php - 使用 PHP 的 Postgres 备份数据

perl - 避免将某些参数混合到脚本中

javafx - 传递参数JavaFX FXML

windows - 如何在批处理或 VBScript 中使用通配符搜索注册表中的键?

java - 以不需要指定路径的方式从bat文件运行java

python - 非默认参数遵循默认参数