我有一个下面列出的文件夹列表:
我必须将逗号分隔的参数传递给脚本,如下所示:
script.bat C:\Program Files,C:\temp,C:\John Snow
传递给脚本后,我需要过滤掉逗号分隔的参数并申请每个循环并回显参数值并执行dir命令列出该导演中的文件
答案 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"
)
资源(必读,不完整):
%~G
,%*
等特殊页面)Command Line arguments (Parameters) %variable:StrToFind=NewStr%
等)Variable Edit/Replace 答案 1 :(得分:0)
set "args=%*"
set "args=%args:,=","%"
for %%# in ("%args%") do (
dir "%%~#"
)
试试这个。