Board logo

标题: 怎样在文件中提取某一行命令 [打印本页]

作者: 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"
)


  Quote:
系统找不到文件 optionFile.txt。


[ 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
关注一下