2012-01-26 2 views
2

У меня есть скрипт линии партии, как показано ниже:для Windows Batch Script: цикл не печатает * значения

for %%v in (aa bb* cc) do echo mget %%v 

Я получаю выход как:

mget aa 

mget cc 

Но мне нужен результат, как:

mget aa 

mget bb* 

mget cc 

Update

У меня есть пакетный файл с именем ftp.bat и файл параметров с именем parm.txt. parm.txt выглядит следующим образом:

server=xxx.yyy.com 
user=abc 
pwd=xyz 
files=aa bb* cc dd ------(this varies) 

Мне нужно извлечь эти значения в моем пакетного файла для создания команд FTP. Используя концепцию delim, у меня есть сервер, пользователь, pwd, но мне нужно разделить файлы.

ответ

4

Если вы используете for с подстановочным знаком, интерпретатор ищет все файлы, соответствующие шаблону («bb *» в этом случае) и передает имена файлов вашей команде. Он не будет передавать строку, содержащую '*' (или '?') Для вашей команды.

Вместо этого создайте текстовый файл с именем filelist.txt, содержащий:

aa 
bb* 
cc 

и использовать команду:

for /F %%I in (filelist.txt) do echo mget %%I 

Update

По-видимому, есть уже 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% 
+0

Спасибо. Но у меня все еще есть проблема. Да, у меня есть отдельный файл, как вы сказали. Но этот файл имеет переменную (значения), присвоенную списком значений, таких как values ​​= aa bb * cc. В этом случае он отражает только первое значение, которое является aa. – user1171858

+0

У вас есть фиксированное количество значений в каждом списке или оно варьируется? – arx

+0

И количество значений меняется, оно динамическое. – user1171858

Смежные вопросы