找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26003|回复: 12

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

[复制链接]
发表于 2022-5-30 22:56:47 | 显示全部楼层 |阅读模式


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


1
for /f "delims=" %%i in ('for %%j in ...')  do echo %%i,
这样嵌套另一个for命令,有效吗?
发表于 2022-5-30 23:14:25 | 显示全部楼层
回复 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
复制代码
发表于 2022-5-31 08:05:23 | 显示全部楼层
in()里面不能嵌套,Do里面可以
发表于 2022-5-31 09:05:17 | 显示全部楼层
从最基础的开始学习,一步步的来,就不会有这么奇葩的想法了。
发表于 2022-5-31 09:48:11 | 显示全部楼层
回复 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
复制代码
发表于 2022-5-31 09:52:41 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2022-5-31 09:56 编辑

居然可以这样用!!!
实际效果相当于:
  1. for %%j in (A B C) do echo,%%j
复制代码
 楼主| 发表于 2022-5-31 18:29:00 | 显示全部楼层
回复 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
大神,可以分解一下这个嵌套命令运行的顺序吗?
 楼主| 发表于 2022-6-2 20:24:23 | 显示全部楼层
回复 2# yakeyun



1
感谢大神!


2
这2个套在一起的for /f命令,其%%a和%%i的值应该是完全一样的。
 楼主| 发表于 2022-6-2 20:26:54 | 显示全部楼层
回复 3# wlmhit903



1
感谢大神!


2
【in()里面不能嵌套,Do里面可以。】
通常都是这么用的。
 楼主| 发表于 2022-6-2 20:28:49 | 显示全部楼层
回复 4# qixiaobin0715



1
感谢大神!


2
遇到问题,就来问一下。
 楼主| 发表于 2022-6-2 20:30:04 | 显示全部楼层
回复 6# qixiaobin0715

发表于 2022-6-4 13:41:35 | 显示全部楼层
当然,也可以无限套下去...就是会出现很多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
复制代码
 楼主| 发表于 2022-6-4 21:00:43 | 显示全部楼层
回复 12# cmd1152



1
感谢大神!


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


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


4
不信,运行一下试试看,便知了。哈哈!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 23:34 , Processed in 0.020524 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表