Windows批处理脚本: for loop not printing * values

标签 windows batch-file

我有一个如下所示的批处理脚本行:

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 概念,我有服务器、用户、密码,但我需要分隔文件。

最佳答案

如果您将 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%

关于Windows批处理脚本: for loop not printing * values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9022788/

相关文章:

c++ - 非阻塞套接字的 Windows select 和 Unix select 之间的区别

windows - 具有重复键的 INI 文件

javascript - 如何通过使用 javascript/jquery 调用使用 .bat 文件自动打印

windows - 批处理脚本使其他批处理文件访问的setlocal变量

batch-file - 批处理文件错误 : "Files was unexpected at this time."

windows - 如何使用chocolatey安装特定版本的Windows sdk?

c++ - Node js 我可以从用 C++ 编写的 Windows 命令行应用程序中获取退出代码吗?

r - 批处理 R 脚本 - 设置工作目录并选择输出文件夹

windows - 如何使用CMD制作批处理文件?

windows - 路径前缀\??\和\\?\