[英]Windows Batch Script : for loop not printing * values
我有一個如下的批處理腳本行:
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,但是我需要分離文件。
如果你使用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%
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.