标题: [文本处理] 批处理命令for /f中如何使用call? [打印本页]
作者: add0kakac 时间: 2017-4-24 10:10 标题: 批处理命令for /f中如何使用call?
如题,- @echo off
- for /f %%i in ('call :A') do (echo %%i)
- pause
- exit
- :A
- echo aaaa
复制代码
运行出错,提示从批脚本外面调用批处理标签的操作无效
作者: ShowCode 时间: 2017-4-24 11:20
具体说说你想干啥,也许有更简单的方法。
作者: add0kakac 时间: 2017-4-24 12:51
回复 2# ShowCode
其实我是想做一个循环调用for循环调用结果给自己
不过现在的问题,是括号里面不能用call 标签的形式吗
作者: ShowCode 时间: 2017-4-24 13:15
回复 3# add0kakac
举个例子说一下为啥要这么做
作者: add0kakac 时间: 2017-4-24 14:47
比如一堆路径
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,括号里面不是可以用命令的吗
作者: ShowCode 时间: 2017-4-24 15:05
回复 5# add0kakac
假设这一堆路径保存在 1.txt 里面- @echo off
- for /f "delims=" %%i in ('type 1.txt') do (
- echo,%%~nxi
- )
- pause
复制代码
还没有遇到过什么场景需要在for的()里面call的
作者: add0kakac 时间: 2017-4-24 16:15
回复 6# ShowCode
谢谢解答,我的批处理还不熟练,忘了%%i的拓展
不过()里是用不到call,还是不能用的
还有,上题中,如果写成
a-b-c-d-e
a-v--c-d
a-b-c
a-b-c-d-f-g
a-z
只取最后一个横杠后的内容,我只会一直分割,分到不能再分为止
作者: ShowCode 时间: 2017-4-24 20:34
回复 7# add0kakac
获取最后一列,有多种思路,请参考:
http://bbs.bathome.net/thread-13000-1-1.html
作者: /zhqsystem/zhq 时间: 2017-4-24 22:22
这样的?for内只能用命令行方式执行调用- set "#="C:\a\b\c\a.txt"
- set "$="&&call:1
- echo,!$!
- pause
- goto:eof
- :1
- if not defined # goto:eof
- for /f "tokens=1,* delims=\" %%y in ("!#!") do set "$=%%y"&set "#=%%z"
- goto:1
复制代码
还是这样的?- for /f "delims=" %%y in ('call cmd.exe /c "%~dp01.bat"')do (
- echo,%%y
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |