![Board logo](images/default/logo.gif)
标题: [文本处理] [已解决]批处理call的使用! [打印本页]
作者: hucuibai 时间: 2011-4-18 13:35 标题: [已解决]批处理call的使用!
本帖最后由 hucuibai 于 2011-4-22 17:03 编辑
- @echo off&setlocal enabledelayedexpansion
- for /r F:\123 %%i in (*.txt) do (
- set str=%%~ni
- set str1=!str:~,-8!
- if !str1!==itemrecord (
- for /l %%a in (1,1,3) do (
- call :func%%a&pause)
-
-
- :func1
- echo !str!
- goto :eof
-
-
- :func2
- echo !str!
- goto :eof
-
-
- :func3
- echo !str!
- goto :eof
- )
- )
复制代码
在f:\\123文件夹下的itemrecord文件有很多,为什么只显示一个?
F:\123\gamerecord-chn1033\20110417\itemrecord20110417.txt
F:\123\gamerecord-chn2028\20110417\itemrecord20110417.txt
F:\123\gamerecord-chn2034\20110416\itemrecord20110416.txt
.
.
.
.
.
.
还有很多,但是只显示的第一个
作者: hanyeguxing 时间: 2011-4-18 15:02
你这里call是什么目的呢?发代码前要详细说明代码的目的- @echo off&setlocal enabledelayedexpansion
- for /r F:\123 %%i in (*.txt) do (
- set str=%%~ni
- if "itemrecord"=="!str:~0,-8!" echo;%%~fa
- )
- pause
复制代码
- @echo off
- for /r %%a in (itemrecord*.txt) do echo;%%~fa
- pause
复制代码
还可以使用dir等等,每种方法都有自己的特点。实际使用时,要根据自己的需要来选择
作者: batman 时间: 2011-4-18 15:03
for循环内是不能使用标签的:- @echo off&setlocal enabledelayedexpansion
- for /r f:\123 %%a in (*.txt) do (
- set "str=%%~na"
- if "!str:~,-8!" equ "itemrecord" (
- for /l %%a in (1,1,3) do call :func%%a&pause
- )
- )
- pause>nul&goto :eof
- :func1
- echo %str%&goto :eof
- :func2
- echo %str%&goto :eof
- :func3
- echo %str%
-
复制代码
作者: hucuibai 时间: 2011-4-18 15:14
2# hanyeguxing
itemrecord*这种文件很大,有不同类型的内容,我是想把相同类型的提取出来做成不同的文件,然后做相应的处理我把我做的脚本传上来你看看,可能是这种方法比较笨,我也想不出别的好的办法了
作者: hucuibai 时间: 2011-4-18 15:17
3# batman
不能用call??可以调用啊,只是这个只能运行一次(for /l %%a in (1,1,3) do ),第二次循环(for /r F:\123 %%i in (*.txt) do)都不行了
作者: weichenxiehou 时间: 2011-4-18 17:31
5# hucuibai
并不是你调用了一次好不好,根本不存在调用不调用的问题,单一命令的内部的标签确实无用,至于你只看到输出一条是因为执行到你所谓的第一个标签就直接goto :eof了,当然只有显示一个文件啊……
作者: hucuibai 时间: 2011-4-18 17:45
6# weichenxiehou
我后面的标签全部都执行了一次!也就是说我那个循环for /l %%a in (1,1,3) do call :func%%a都执行了,只是不能回到前面那个循环
作者: asnahu 时间: 2011-4-18 19:43
应该像batman那样写。代码中用了gawk,难道gawk不能满足要求吗?
作者: hucuibai 时间: 2011-4-19 09:06
8# asnahu
gawk不大会用,呵呵!哦哦哦 知道了 标签不能写在for循环里面是吧!!
作者: hucuibai 时间: 2011-4-19 09:18
3# batman
感谢batman,开始没看清楚!呵呵
作者: caruko 时间: 2011-4-19 09:54
你的括号结束的地方不对,
2个))应该放到 func1: 前面
作者: hucuibai 时间: 2011-4-19 14:43
11# caruko
恩恩,我知道了,谢谢!
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |