如何为批处理传递给脚本的逗号分隔参数申请循环?

时间:2016-05-19 11:04:59

标签: batch-file

我有一个下面列出的文件夹列表:

  • C:\ Program Files
  • C:\ temp中
  • C:\ John Snow

我必须将逗号分隔的参数传递给脚本,如下所示:

script.bat C:\Program Files,C:\temp,C:\John Snow

传递给脚本后,我需要过滤掉逗号分隔的参数并申请每个循环并回显参数值并执行dir命令列出该导演中的文件

2 个答案:

答案 0 :(得分:1)

@ECHO OFF
SETLOCAL EnableExtensions
set "_params=%*"
if not defined _params (
  echo %~nx0: nothing to do
  pause
  exit /B
)
set "_params=%_params:,=","%"
for %%G in ("%_params%") do (
  echo dir "%%~G"
)

<强>输出

==> 37321331.bat
37321331.bat: nothing to do
Press any key to continue . . .

==> 37321331.bat C:\Program Files,C:\temp,C:\John Snow
dir "C:\Program Files"
dir "C:\temp"
dir "C:\John Snow"

==>

上面的脚本需要一些详细说明:如果一些参数包含在一对双引号中,它将会失败:

==> 37321331.bat C:\Program Files,C:\temp,"C:\John Snow"
dir "C:\Program Files"
dir "C:\temp"
dir ""C:\John"
dir "Snow"""

修改即可。使用下一个代码段来修复它:set "_params=%_params:"=%"将从提供的字符串中删除所有"双引号。

set "_params=%_params:"=%"
set "_params=%_params:,=","%"
for %%G in ("%_params%") do (
  echo dir "%%~G"
)

资源(必读,不完整):

答案 1 :(得分:0)

set "args=%*"
set "args=%args:,=","%"
for %%# in ("%args%") do (
  dir "%%~#"
)

试试这个。