标题: [文件操作] 求教批处理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
不可以,但是可以分开写:- @echo off
- for /f %%a in (a.txt) do (
- for /f "delims=" %%i in ("%%a") do (
- echo %%i
- )
- )
- pause >nul
复制代码
作者: wlmhit903 时间: 2022-5-31 08:05
in()里面不能嵌套,Do里面可以
作者: qixiaobin0715 时间: 2022-5-31 09:05
从最基础的开始学习,一步步的来,就不会有这么奇葩的想法了。
作者: Batcher 时间: 2022-5-31 09:48
回复 1# smatenchen
语法上是可以的,但是一般不这样用。- @echo off
- for /f "delims=" %%i in ('for %%j in ^(A B C^) do @echo,%%j') do (
- echo,%%i
- )
- pause
复制代码
作者: qixiaobin0715 时间: 2022-5-31 09:52
本帖最后由 qixiaobin0715 于 2022-5-31 09:56 编辑
居然可以这样用!!!
实际效果相当于:- 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- @echo off
- for /f "delims=" %%i in ('for %%j in ^(for %%n in ^(A B C^) do @echo,%%n^) do @echo,%%j') do (
- echo,%%i
- )
- pause
复制代码
作者: smatenchen 时间: 2022-6-4 21:00
回复 12# cmd1152
1
感谢大神!
2
这样,在for命令集里嵌套for命令,它的运行顺序是,多次把当前路径加入结果里,再echo出来。
3
所以,可以想象,你写的嵌套for命令的结果里,会多次把当前路径重复地显示出来,会很奇葩!
4
不信,运行一下试试看,便知了。哈哈!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |