中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 怎么把一个文本文件第三行赋给变量str?
作者:
标题: 怎么把一个文本文件第三行赋给变量str? 上一主题 | 下一主题
wuhanbin
初级用户





积分 191
发帖 86
注册 2008-8-18
状态 离线
『楼 主』:  怎么把一个文本文件第三行赋给变量str?

RT

2008-8-26 13:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  


@echo off
setlocal enabledelayedexpansion
set row=0
for /f "tokens=*" %%a in (a.txt) do (
  set /a row+=1
  if !row! equ 3 (
    set str=%%a
    echo !str!
    goto :eof
  )
)




2008-8-26 13:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wuhanbin
初级用户





积分 191
发帖 86
注册 2008-8-18
状态 离线
『第 3 楼』:  

我用了大哥的代码,怎么不能成功将%str% echo 到new.txt

2008-8-26 13:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wuhanbin
初级用户





积分 191
发帖 86
注册 2008-8-18
状态 离线
『第 4 楼』:  

能不能用skip=2呢?

2008-8-26 13:37
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 5 楼』:  


@echo off
for /f "skip=2 tokens=*" %%a in (a.txt) do (
  >"new.txt" echo %%a
  goto :eof
)




2008-8-26 13:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wuhanbin
初级用户





积分 191
发帖 86
注册 2008-8-18
状态 离线
『第 6 楼』:  

HAT大哥 出怪问题了,其他TXT用你的代码都行,可是唯独下面一个TXT文本不行
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\KINGSOFT\ANTIVIRUS]
"ProgramPath"="C:\\Program Files\\Kingsoft\\Kingsoft Internet Security 2008\\"

2008-8-26 13:56
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wuhanbin
初级用户





积分 191
发帖 86
注册 2008-8-18
状态 离线
『第 7 楼』:  

我是想把第三行提出出来给变量STR,然后用FOR命令,改成C:\Program Files\Kingsoft\Kingsoft Internet Security 2008\

2008-8-26 13:58
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 8 楼』:  Re 7楼

赋值给变量了,你先试试自己的思路来修改吧。
@echo off
for /f "skip=2 tokens=*" %%a in (a.txt) do (
  set str=%%a
  goto :show
)
goto :eof
:show
>"new.txt" echo %str%




2008-8-26 14:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 9 楼』:  Re 6楼

对于unicode编码格式的文档,需要先type一下。
@echo off
for /f "skip=2 tokens=*" %%a in ('type "a.txt"') do (
  set str=%%a
  goto :show
)
goto :eof
:show
>"new.txt" echo %str%




2008-8-26 14:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bray
新手上路





积分 14
发帖 7
注册 2008-8-25
状态 离线
『第 10 楼』:  



  Quote:
Originally posted by HAT at 2008-8-26 02:29 PM:
对于unicode编码格式的文档,需要先type一下。
[code]@echo off
for /f "skip=2 tokens=*" %%a in ('type "a.txt"') do (
  set str=%%a
  goto :show
)
goto :eof
: ...

echo !str!
和echo %str%有什么区别?

2008-8-26 14:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wuhanbin
初级用户





积分 191
发帖 86
注册 2008-8-18
状态 离线
『第 11 楼』:  

貌似!str!用在enabledelayedexpansion开启延时的情况下,而%str%用在没有开启的情况下

2008-8-26 15:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wuhanbin
初级用户





积分 191
发帖 86
注册 2008-8-18
状态 离线
『第 12 楼』:  

对于6楼的文本1.txt,我已经经过代码的修改提取到了C:\Program Files\Kingsoft\Kingsoft Internet Security 2008\ ,但是想问下HAT,下面的代码能否压缩下,比如两个for命令合并在一起?两条set str替换命令合并在一起?
@echo off
for /f "skip=2 tokens=*" %%a in ('type "1.txt"') do set str=%%a
set str=%str:\\=\%
set str=%str:"=-%
for /f "tokens=3 delims=-" %%a in ("%str%") do set str=%%a
echo %str%
pause

2008-8-26 15:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 13 楼』:  Re 10楼

变量延迟详解
http://www.cn-dos.net/forum/viewthread.php?tid=28273

什么情况下该使用变量延迟?
http://www.cn-dos.net/forum/viewthread.php?tid=20733



2008-8-26 15:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 14 楼』:  Re 12楼


@echo off
for /f "skip=2 tokens=2 delims==" %%a in ('type "1.txt"') do set str=%%a
set str=%str:\\=\%
set str=%str:"=%
echo %str%




2008-8-26 15:29
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wuhanbin
初级用户





积分 191
发帖 86
注册 2008-8-18
状态 离线
『第 15 楼』:  

谢谢,原来是换了种思路,以=为分隔符,取等号后一段文字,然后把\\替换成\,把“替换成空,就去掉了引号。HAT好强!

2008-8-26 15:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: