[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 求教批处理for命令in () 里可以嵌套另一个for命令吗?



求教 for 命令, in () 里可以嵌套另一个for命令吗?


1
for /f "delims=" %%i in ('for %%j in ...')  do echo %%i,
这样嵌套另一个for命令,有效吗?

回复 1# smatenchen


不可以,但是可以分开写:
  1. @echo off
  2. for /f %%a in (a.txt) do (
  3. for /f "delims=" %%i in ("%%a")  do (
  4. echo %%i
  5. )
  6. )
  7. pause >nul
复制代码

TOP

in()里面不能嵌套,Do里面可以

TOP

从最基础的开始学习,一步步的来,就不会有这么奇葩的想法了。

TOP

回复 1# smatenchen


语法上是可以的,但是一般不这样用。
  1. @echo off
  2. for /f "delims=" %%i in ('for %%j in ^(A B C^) do @echo,%%j')  do (
  3.     echo,%%i
  4. )
  5. pause
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 qixiaobin0715 于 2022-5-31 09:56 编辑

居然可以这样用!!!
实际效果相当于:
  1. for %%j in (A B C) do echo,%%j
复制代码

TOP

回复 5# Batcher



1
感谢大神。


2
牛到顶了啊!
其他大神,都说不行,只有你见多识广,真牛啊!实力啊!碾压啊!


3
试了一下,真有效,真可行!
鄙人也是心奇,突发奇想,干嘛在 for /f 集里,不可以用变量定义集里的个体呢?
故,来求教。


4
运行结果,有点奇怪!其中运行的顺序是什么样的呢?
for %%j in ^(A B C^)里的A B C,应该都要算是当前目录下的文件,
echo,%%j 将会分别显示A B C,不会把当前路径带上一同显示。
单独把for %%j in ^(A B C^)拆出来运行,也的确是只分别显示A B C。
但装入嵌套里,去掉其中的@后,再运行时,结果会显示出来当前路径,
再分别显示A B C。


5
大神,可以分解一下这个嵌套命令运行的顺序吗?

TOP

回复 2# yakeyun



1
感谢大神!


2
这2个套在一起的for /f命令,其%%a和%%i的值应该是完全一样的。

TOP

回复 3# wlmhit903



1
感谢大神!


2
【in()里面不能嵌套,Do里面可以。】
通常都是这么用的。

TOP

回复 4# qixiaobin0715



1
感谢大神!


2
遇到问题,就来问一下。

TOP

回复 6# qixiaobin0715

TOP

当然,也可以无限套下去...就是会出现很多BUG
  1. @echo off
  2. for /f "delims=" %%i in ('for %%j in ^(for %%n in ^(A B C^) do @echo,%%n^) do @echo,%%j')  do (
  3.     echo,%%i
  4. )
  5. pause
复制代码
梦依旧在,只是,心有余而力渐有不足
年年岁岁花相似,岁岁年年人不同

TOP

回复 12# cmd1152



1
感谢大神!


2
这样,在for命令集里嵌套for命令,它的运行顺序是,多次把当前路径加入结果里,再echo出来。


3
所以,可以想象,你写的嵌套for命令的结果里,会多次把当前路径重复地显示出来,会很奇葩!


4
不信,运行一下试试看,便知了。哈哈!

TOP

返回列表