簡體   English   中英

Windows Batch腳本:for循環不打印*值

[英]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 ,為serveruserpwdfiles每一個創建一個變量,然后在文件列表中調用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM