Board logo

标题: [文件操作] [已解决]批处理命令 for /r 的路径可以迭代吗? 我的代码不能运行,求解? [打印本页]

作者: battab    时间: 2015-1-27 17:03     标题: [已解决]批处理命令 for /r 的路径可以迭代吗? 我的代码不能运行,求解?

本帖最后由 battab 于 2015-1-29 23:30 编辑
  1. @echo off
  2. for %%a in (c:\ d:\ e:\ f:\) do (
  3. for /r %%a %%b in (123.abc) do if exist %%b echo %%b
  4. )
  5. pause
复制代码
如上代码,我想在c\d\e\f盘中搜索是否存在指定文件,只见批处理窗口一闪而过,求解?
作者: yiwuyun    时间: 2015-1-27 17:35

看起来象括号没配对。
作者: pcl_test    时间: 2015-1-27 18:05

回复 1# battab
  1. @echo off
  2. for %%a in (c:\ d:\ e:\ f:\) do (
  3. for /f "delims=" %%b in ('dir /b/s %%a123.abc 2^>nul') do (
  4. echo %%b
  5. )
  6. )
  7. pause
复制代码

作者: battab    时间: 2015-1-28 11:37

回复 3# pcl_test
你的代码确实解决了搜索的问题,但我的问题是:for /r 命令的开关后面的盘符为什么不能被循环代入?
作者: pcl_test    时间: 2015-1-28 16:51

回复 4# battab

for /r 不能用变量啦
作者: CrLf    时间: 2015-1-28 17:00

for /r %%a %%b in
这里出的问题,for 的参数部分必须在语法解析时就确定下来,不支持 !a! 与 %%a 这类在语法解析之后才被扩展的变量
作者: yiwuyun    时间: 2015-1-28 20:23

可以用%A%形式的变量来替换,但这种形式的变量只能解析一次,因此要实现变化,只能通过call调用来实现。
作者: battab    时间: 2015-1-29 23:27

好的,谢谢诸位的回答,清楚了。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2