标题: [文本处理] call到相应的标签findstr过滤批处理本身显示内容 [打印本页]
作者: freesoft00 时间: 2015-11-8 01:19 标题: call到相应的标签findstr过滤批处理本身显示内容
本帖最后由 freesoft00 于 2015-11-8 16:01 编辑
- 上层代码call :www %%b
-
-
- :www
- if exist %srt% call :bbb
- goto :eof
-
- :bbb
- for /f %%i in ('type %0^|findstr /i "^c:.*\.exe$"') do (
- del %%i
- )
- goto :eof
-
- c:\windows\explorer.exe
- c:\windows\notepad.exe
复制代码
不知道为什么不对。在:bbb标签这里无法执行下去。我把echo off更改为echo on ,查看'type %0在代码执行中是'type :bbb,是不是因为这里所以错误了。
正确的应用call应该如何呢?
作者: freesoft00 时间: 2015-11-8 01:26
本帖最后由 freesoft00 于 2015-11-8 09:23 编辑
for /f %%i in ('type %%0^|findstr /i "^c:.*\.exe$"') do (
两个百分号也不对
但是比如这个文件是33.txt
for /f %%i in ('type 33.ttxt^|findstr /i "^c:.*\.exe$"') do (
这样就可以。但是名称就必须得固定的了。
作者: 依山居 时间: 2015-11-8 06:40
楼主是做流氓软件的吧。
作者: freesoft00 时间: 2015-11-8 09:21
回复 3# 依山居
仁兄何以见得?
我那个del只是示例。
作者: 依山居 时间: 2015-11-8 10:38
- @echo off
- ::CODER BY yishanju POWERD BY iBAT
-
-
- findstr /i ".*\.exe$" %0
-
-
- :g
- goto ex
-
- c:\windows\explorer.exe
- c:\windows\notepad.exe
-
- :ex
- pause
复制代码
作者: terse 时间: 2015-11-8 11:16
call 过去的时候 先传递%0 过去呢 比如 call :www %0
然后 type %1
作者: /zhqsystem/zhq 时间: 2015-11-8 14:25
本帖最后由 /zhqsystem/zhq 于 2015-11-8 14:34 编辑
用type "%~f0"判断当值为某标签时设定一个开始的变量值,当不等于这个值时连续执行每行,判断想要结束的行当需要结束时设定一个变量或清空结束的变量值,判断有变量值时[和没有变量]执行就完成了,这是执行思路自己多研究下就会发现其中的奥妙之处了
作者: freesoft00 时间: 2015-11-8 15:16
感谢各位的提点。
其实我的 代码是这样的,第一个call后面跟了一个参数,
上层代码call :www %%b
:www
call :bbb
:bbb
tyep %0
因为call命令并不怎么熟悉,想这样用,可以省去很多命令,实现代码复用。
用type "%~f0"判断当值为某标签时设定一个开始的变量值,当不等于这个值时连续执行每行,判断想要结束的行当需要结束时设定一个变量或清空结束的变量值,判断有变量值时[和没有变量]执行就完成了,这是执行思路自己多研究下就会发现其中的奥妙之处了
恕在下愚笨,如果能有实例代码更容易理解,纯理论还是摸不着头脑。
作者: WHY 时间: 2015-11-8 15:50
复制代码
这里的 %0 是指标签本身(:www)
可以这样:- call :www "%~0"
-
- :www
- echo %~1
复制代码
作者: /zhqsystem/zhq 时间: 2015-11-8 17:41
回复 8# freesoft00
研究下这段代码的含义吧,不用call直接运行指定批处理内的文本,第二个for可以去除建议保留(去除注意括号和变量值替换),注:此段代码思路出自群内某位大神非我的代码
- @echo off
- for /f "delims=" %%i in ('type "%~f0"') do (
- for /f "delims=" %%j in ("%%i") do (
- if /i "%%i"=="::bathome.net" set "start_start=yes"&set "over="
- if /i "%%i"=="::bathome.net_over" set "over=no"&set "start_start="
- if /i not "%%i"=="::bathome.net" if defined start_start if not defined over echo=%%j
- )
- )
- pause
- ::bathome.net
- 123457
- 890
- 6754
- jkhfd
- ::bathome.net_over
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |