标题: 怎样在文件中提取某一行命令
[打印本页]
作者: zouzhxi
时间: 2006-11-16 22:21
标题: 怎样在文件中提取某一行命令
我在论坛上找了好久,,可是也没有找到合适的BAT
所以发贴问一下...可能已经发了好多类似的贴了,.是我没找到而已...
就是我的BAT执行时,..要在OptionFile.txt里边找到一条(一行就是一条命令)...并执行它...
打个比方:
我的OptionFile.txt是这样的
[OptionFile]
Version=1
D:\ZOUZHXI\OPENCONPUTER\UpC.BAT
D:\ZOUZHXI\OPENCONPUTER\UDC.ZZX
D:\ZOUZHXI\OPENCONPUTER\DoC.BAT
C:\TENCENT\QQ\QQ.BAT
C:\TENCENT\QQ\LANDTIMER.DLL
Quote: |
问题补充:
我要找到C:\TENCENT\QQ\QQ.BAT并执行它!!!
就一句先吧。。 |
|
应该怎么样来写...
[
Last edited by zouzhxi on 2006-11-17 at 10:44 PM ]
作者: NaturalJ0
时间: 2006-11-16 22:38
怎么“找”?
作者: namejm
时间: 2006-11-16 23:14
把这个东西看完之后,你就会找到解决类似问题的办法了:
请点我
作者: zouzhxi
时间: 2006-11-16 23:24
用“提取”俩字找的呀。。
作者: zouzhxi
时间: 2006-11-16 23:46
Re: 3F
你提供的资料,我看了,就是看不懂。。。
几个英文能看懂之外其他的都有点模糊不清,,眼睛直冒星星,,,瞬时间感觉头部缺氧。。。。
作者: namejm
时间: 2006-11-17 00:02
给你来两段代码演示一下吧:
@echo off
:: 从文本的第三行起执行命令
for /f "skip=2 delims=" %%i in (OptionFile.txt) do "%%i"
@echo off
:: 执行第三行的命令
set num=0
setlocal enabledelayedexpansion
for /f "delims=" %%i in (OptionFile.txt) do (
set /a num+=1
if !num! equ 3 "%%i"
)
@echo off
:: 执行第三行的命令
for /f "tokens=1* delims=:" %%i in ('findstr /n . OptionFile.txt') do if %%i equ 3 "%%j"
@echo off
:: 执行最后一条命令
for /f "delims=" %%i in (OptionFile.txt) do set command=%%i
"%command%"
作者: NaturalJ0
时间: 2006-11-17 00:31
找第几行是一种找法
找含有 QQ 字符串的行是一种找法
谁知道你要找什么?谁知道你要提什么?
作者: zouzhxi
时间: 2006-11-17 01:25
Re 7F:
我不是否说了吗!!!
Quote: |
就是我的BAT执行时,..要在OptionFile.txt里边找到一条(一行就是一条命令)...并执行它... |
|
作者: zouzhxi
时间: 2006-11-17 01:40
Quote: |
@echo off
:: 执行第三行的命令
for /f "tokens=1* delims=:" %%i in ('findstr /n . OptionFile.txt') do if %%i equ 3 "%%j"
Quote: | FINDSTR: 无法打开 OptionFile.txt |
|
@echo off
:: 执行第三行的命令
set num=0
setlocal enabledelayedexpansion
for /f "delims=" %%i in (OptionFile.txt) do (
set /a num+=1
if !num! equ 3 "%%i"
)
|
|
[
Last edited by namejm on 2006-11-16 at 01:06 PM ]
作者: vkill
时间: 2006-11-17 01:52
for /f "delims=*" %%? in ('gsed "/^.*:.*\QQ.BAT$/!{d;p}" OptionFile.txt') do start "%%?"
gsed 下载:
http://www.yx127.com/tools.html
[
Last edited by vkill on 2006-11-17 at 01:58 AM ]
作者: namejm
时间: 2006-11-17 02:07
Re zouzhxi 『第 9 楼』:
我晕死,你电脑上没那个文件,你还玩什么?
作者: zouzhxi
时间: 2006-11-17 02:15
有呀,,,
在同一目录下,两个文件在一起放着。。。
[
Last edited by zouzhxi on 2006-11-17 at 02:18 AM ]
作者: NaturalJ0
时间: 2006-11-17 03:10
拼写错误
file
flie
作者: ccwan
时间: 2006-11-17 03:22
果然。
以后一定要谨慎。
作者: zouzhxi
时间: 2006-11-17 04:02
不好意思了。
你的代码没问题,,是我文件名问题,
谢谢你们的回答,已经解决了
作者: zouzhxi
时间: 2006-11-17 22:49
又出现问题!
如下:
…………
for /f "tokens=1* delims=:" %%i in ('findstr /n . OptionFile.txt') do if %%i equ 3 "%%j"
call :ReCookis
…………
执行完FOR,就不能返回CALL命令来,而是直接退出BAT。。。
怎么回事。。。???!!!
作者: NaturalJ0
时间: 2006-11-17 22:59
可以给出完整的代码看看么?
问题可能出在 CALL 的那块代码上。
作者: redtek
时间: 2006-11-17 23:17
...
...
call :ReCookis
...
goto :eof
:ReCookis
代码....
REM ==============如果你ReCookis标签代码段结束的时候无 goto :eof,则不会返回到Call的调用者处。
goto :eof
:A
....
goto :eof
:B
...
goto :eof
如果下面for中命令的执行段: For ... (..) do (这里面代码如果不被括号括起来,也将不被For视为在For中执行的多条代码,它将只执行同一行中代码)
for /f "tokens=1* delims=:" %%i in ('findstr /n . OptionFile.txt') do if %%i equ 3 "%%j"
[
Last edited by redtek on 2006-11-17 at 11:21 PM ]
作者: zouzhxi
时间: 2006-11-17 23:17
我是执行了FOR以后(FOR里边的第三行是一条命令呀《打开一个文件执行,结束》),才执行CALL的
有好多文件,

DATE里边还有好多文件
[
Last edited by zouzhxi on 2006-11-17 at 11:21 PM ]
作者: hxuan999
时间: 2006-11-23 03:49
关注一下