解析参数,它是一个逗号分隔的字符串,传递给批处理文件

时间:2019-04-11 14:57:00

标签: batch-file cmd

我有一个批处理文件,它带有一个参数,该参数是一个逗号分隔的字符串,我这样称呼它:

myBatch.bat ".git,*.tmp,file.c"

在批处理文件中,我需要编写一个代码来解析在命令行中传递的参数,并像这样将其中断:

@echo off
set excludes=%~1
set excludes_cmd=""

FOR /f "tokens=1* delims=," %%a IN ("%excludes%") DO (
   set "excludes_cmd=%%excludes_cmd%% --exclude %%~a"
)

所以最后,当我推入'excludes_cmd'变量时,我会得到这个:

--exclude .git --exclude *.tmp --exclude file.c

2 个答案:

答案 0 :(得分:2)

您应该能够通过基本的变量扩展和替换来做到这一点:

@Echo Off
Set "excludes=%~1"
If Not Defined excludes GoTo :EOF
Set "excludes_cmd=--exclude %excludes:,= --exclude %"

变量%excludes_cmd%应该包含您所需的内容。

答案 1 :(得分:2)

采用与Compo类似的方法,只是将示例作为默认值插入。

@echo off
if "%~1"=="" "%~f0" ".git,*.tmp,file.c"
set "excludes=,%~1"
set "excludes_cmd=%excludes:,= --exclude %"
set excludes
excludes=,.git,*.tmp,file.c
excludes_cmd= --exclude .git --exclude *.tmp --exclude file.c