Board logo

标题: [文件操作] 求教批处理for命令in () 里可以嵌套另一个for命令吗? [打印本页]

作者: smatenchen    时间: 2022-5-30 22:56     标题: 求教批处理for命令in () 里可以嵌套另一个for命令吗?



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


1
for /f "delims=" %%i in ('for %%j in ...')  do echo %%i,
这样嵌套另一个for命令,有效吗?
作者: yakeyun    时间: 2022-5-30 23:14

回复 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
复制代码

作者: wlmhit903    时间: 2022-5-31 08:05

in()里面不能嵌套,Do里面可以
作者: qixiaobin0715    时间: 2022-5-31 09:05

从最基础的开始学习,一步步的来,就不会有这么奇葩的想法了。
作者: Batcher    时间: 2022-5-31 09:48

回复 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
复制代码

作者: qixiaobin0715    时间: 2022-5-31 09:52

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

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

作者: smatenchen    时间: 2022-5-31 18:29

回复 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
大神,可以分解一下这个嵌套命令运行的顺序吗?
作者: smatenchen    时间: 2022-6-2 20:24

回复 2# yakeyun



1
感谢大神!


2
这2个套在一起的for /f命令,其%%a和%%i的值应该是完全一样的。
作者: smatenchen    时间: 2022-6-2 20:26

回复 3# wlmhit903



1
感谢大神!


2
【in()里面不能嵌套,Do里面可以。】
通常都是这么用的。
作者: smatenchen    时间: 2022-6-2 20:28

回复 4# qixiaobin0715



1
感谢大神!


2
遇到问题,就来问一下。
作者: smatenchen    时间: 2022-6-2 20:30

回复 6# qixiaobin0715


作者: cmd1152    时间: 2022-6-4 13:41

当然,也可以无限套下去...就是会出现很多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
复制代码

作者: smatenchen    时间: 2022-6-4 21:00

回复 12# cmd1152



1
感谢大神!


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


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


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




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