我有一个如下所示的批处理脚本行:
for %%v in (aa bb* cc) do echo mget %%v
我的输出为:
mget aa
mget cc
但我需要输出:
mget aa
mget bb*
mget cc
更新
我有一个名为ftp.bat的批处理文件和一个名为parm.txt
的参数文件。 parm.txt
看起来像:
server=xxx.yyy.com
user=abc
pwd=xyz
files=aa bb* cc dd ------(this varies)
我需要在批处理文件中提取这些值以构造ftp命令。使用delim概念我有服务器,用户,pwd,但我需要分开文件。
答案 0 :(得分:4)
如果将for
与通配符一起使用,解释程序将查找与通配符匹配的所有文件(在本例中为“bb *”),并将文件名传递给您的命令。它不会将包含'*'(或'?')的字符串传递给您的命令。
而是创建一个名为filelist.txt
的文本文件,其中包含:
aa
bb*
cc
并使用命令:
for /F %%I in (filelist.txt) do echo mget %%I
<强>更新强>
显然,每行都有一个filelist.txt
个项目。创建名为vary.bat
的批处理文件:
@echo off
:more
if "%1"=="" (goto finished)
echo mget %1
shift
goto more
:finished
这需要可变数量的参数,并为每个参数回显一个mget。用以下内容称呼它:
for /F "tokens=*" %%I in (filelist.txt) do vary %%I
另一次更新
这将显示parm.txt
,为server
,user
,pwd
和files
中的每一个创建变量,然后调用vary.bat
(如上所述)文件列表。
for /F "delims== tokens=1,2" %%I in (parm.txt) do set %%I=%%J
vary %files%