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

[文本处理] 批处理命令for /f中如何使用call?

[复制链接]
发表于 2017-4-24 10:10:52 | 显示全部楼层 |阅读模式
如题,
  1. @echo off
  2. for /f %%i in ('call :A') do (echo %%i)
  3. pause
  4. exit
  5. :A
  6. echo aaaa
复制代码
运行出错,提示从批脚本外面调用批处理标签的操作无效
发表于 2017-4-24 11:20:35 | 显示全部楼层
具体说说你想干啥,也许有更简单的方法。
 楼主| 发表于 2017-4-24 12:51:37 | 显示全部楼层
回复 2# ShowCode

其实我是想做一个循环调用for循环调用结果给自己
不过现在的问题,是括号里面不能用call 标签的形式吗
发表于 2017-4-24 13:15:48 | 显示全部楼层
回复 3# add0kakac


    举个例子说一下为啥要这么做
 楼主| 发表于 2017-4-24 14:47:32 | 显示全部楼层
比如一堆路径
C:\a\b\c\a.txt
C:\a\b\c\b.txt
C:\a\b\c.txt
C:\a\b\d.txt
C:\a\f.txt
C:\a\g.txt
等等,我只要取最后的文件名,用for语句“\”进行分割,循环到不能分割为止
还有其实我想比较想知道的是,能不能用call,括号里面不是可以用命令的吗
发表于 2017-4-24 15:05:36 | 显示全部楼层
回复 5# add0kakac


假设这一堆路径保存在 1.txt 里面
  1. @echo off
  2. for /f "delims=" %%i in ('type 1.txt') do (
  3.     echo,%%~nxi
  4. )
  5. pause
复制代码
还没有遇到过什么场景需要在for的()里面call的
 楼主| 发表于 2017-4-24 16:15:19 | 显示全部楼层
回复 6# ShowCode

谢谢解答,我的批处理还不熟练,忘了%%i的拓展
不过()里是用不到call,还是不能用的
还有,上题中,如果写成
a-b-c-d-e
a-v--c-d
a-b-c
a-b-c-d-f-g
a-z
只取最后一个横杠后的内容,我只会一直分割,分到不能再分为止
发表于 2017-4-24 20:34:37 | 显示全部楼层
回复 7# add0kakac


获取最后一列,有多种思路,请参考:
http://bbs.bathome.net/thread-13000-1-1.html

评分

参与人数 1技术 +1 收起 理由
taofan712 + 1 乐于助人

查看全部评分

发表于 2017-4-24 22:22:56 | 显示全部楼层
这样的?for内只能用命令行方式执行调用
  1. set "#="C:\a\b\c\a.txt"
  2. set "$="&&call:1
  3. echo,!$!
  4. pause
  5. goto:eof
  6. :1
  7. if not defined # goto:eof
  8. for /f "tokens=1,* delims=" %%y in ("!#!") do set "$=%%y"&set "#=%%z"
  9. goto:1
复制代码
还是这样的?
  1. for /f "delims=" %%y in ('call cmd.exe /c "%~dp01.bat"')do (
  2. echo,%%y
  3. )
  4. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 17:40 , Processed in 0.016883 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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