中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 通过BAT读取文本的前几个字符
« [1] [2] »
作者:
标题: 通过BAT读取文本的前几个字符 上一主题 | 下一主题
junyee
中级用户




积分 253
发帖 112
注册 2006-5-31
状态 离线
『楼 主』:  通过BAT读取文本的前几个字符

现有一个文件:01.txt
内容为
123
132464……
我想请人帮忙写个批处理,把01.txt重命名
为123.txt
具体想实现的功能就是读取该TXT文件的前面几个字符(第一个字符到有空格或换行符处,)并将其作为该文件的新文件名。
另:
如果我想把它命名为23.txt怎么写??(想实现的结果同上,再排除字符1)

2006-11-3 14:51
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
junyee
中级用户




积分 253
发帖 112
注册 2006-5-31
状态 离线
『第 2 楼』:  ↑

咋没人来帮啊??
所学有限,找不着思路
不要怪我懒 o_o,搜索的话结果太多了~~~
好乱吖~~ -_-#~~

2006-11-3 22:48
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
NaturalJ0
银牌会员




积分 1181
发帖 533
注册 2006-8-14
状态 离线
『第 3 楼』:  

提供个思路
for /f ........do (ren ..... & goto.........)

2006-11-3 22:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zerostudy
中级用户





积分 266
发帖 98
注册 2006-4-21
状态 离线
『第 4 楼』:  

功力有限.呵呵.帮不了你的了...帮你顶下..顺便问下.DOS下.空格和回车用什么表示?

2006-11-3 23:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 5 楼』:  

楼上的会忽略空格

FOR /F %%i in (01.txt) do set a=%%i&goto 1
:1
ren 01.txt “%a:~1%.txt”

[ Last edited by 不得不爱 on 2006-11-3 at 01:40 PM ]



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2006-11-3 23:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
youxi01
高级用户




积分 846
发帖 247
注册 2006-10-27
来自 湖南==》广东
状态 离线
『第 6 楼』:  

楼上斑竹似乎会错了楼主的意思啊?!
代码改为:
FOR /F  %%i in (01.txt) do rename 01.txt %%i.txt & goto :eof

2006-11-4 00:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 7 楼』:  

  5F的代码会提取到整个第一行,而不会在第一行的空格处截止,不太符合楼主的意思。如果还要抛弃第一行第一列的第一个字符,可以用这个代码:
@echo off
for /f %%i in (01.txt) do set var=%%i&goto change
:change
ren 01.txt %var:~1%.txt




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-11-4 00:39
查看资料  发短消息 网志   编辑帖子  回复  引用回复
junyee
中级用户




积分 253
发帖 112
注册 2006-5-31
状态 离线
『第 8 楼』:  

ren 01.txt %var:~1%.txt
想问下这个什么意思??           :~1%

2006-11-4 01:31
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
不得不爱
超级版主

我爱DOS


积分 5310
发帖 2044
注册 2005-9-26
来自 四川南充
状态 离线
『第 9 楼』:  

%var:~1%的意思是取除第一个字符外的所有字符
5楼代码已经改了



我的网络U盘 我的网络第2个U盘
论坛软件下载链接
灵雨飘零论坛  
论坛新手必读,所有人的基本行为准则
刷QQ空间人气、留言的小软件
2006-11-4 01:42
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 10 楼』:  

  请运行以下代码:
@echo off
set str=123456789
echo 第一个字符为:%str:~0,1%
echo 头两个字符为:%str:~0,2%
echo 头5个字符为:%str:~0,5%
echo 去掉最后一个字符后的字符串为:%str:~0,-1%
echo 去掉最后3个字符后的字符串为:%str:~0,-3%
echo 第4个字符为:%str:~3,1%
echo 第4个及其之后的3个字符为:%str:~3,4%
echo 最后一个字符为:%str:~-1%
echo 最后一个字符为:%str:~-1,1%
echo 最后一个字符为:%str:~-1,2%
echo 倒数第4个字符为:%str:~-4,1%
echo 倒数第4个及其之后的字符为:%str:~-4%
echo 倒数第4个及其之后的1个字符为:%str:~-4,2%
echo 倒数第4个及其之后的2个字符为:%str:~-4,3%
pause


   此帖被 +10 点积分       点击查看详情   
评分人:【 redtek 分数: +2  时间:2006-11-5 01:17
评分人:【 jmz573515 分数: +8  时间:2007-3-13 09:43




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-11-4 01:50
查看资料  发短消息 网志   编辑帖子  回复  引用回复
3742668
荣誉版主





积分 2013
发帖 718
注册 2006-2-18
状态 离线
『第 11 楼』:  


@echo off
    set file=1.txt
    set /p str=<%file% >nul
    for /f %%i in ("%str%") do ren %file% %%i
用了set还用for,有点画蛇添足,不过在这里的目的只是想向新人介绍一下用set /p 获得文件第一行内容这个大众技巧。
代码未经测试。

   此帖被 +2 点积分    点击查看详情   
评分人:【 tghksj 分数: +2  时间:2007-1-3 05:41


2006-11-5 01:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
hxuan999
中级用户

DOS之日


积分 337
发帖 161
注册 2006-11-4
状态 离线
『第 12 楼』:  

学到东西了.



for /f %%h in (`echo hxuan`) do for /f %%x in (`echo hxuan`) do if %%h==%%x nul
2006-11-23 06:38
查看资料  发送邮件  发短消息 网志  OICQ (33899867)  编辑帖子  回复  引用回复
fjcyz
初级用户





积分 68
发帖 36
注册 2006-12-20
状态 离线
『第 13 楼』:  

记号,.,,好东东

@echo off
set str=123456789
echo 第一个字符为:%str:~0,1%
echo 头两个字符为:%str:~0,2%
echo 头5个字符为:%str:~0,5%
echo 去掉最后一个字符后的字符串为:%str:~0,-1%
echo 去掉最后3个字符后的字符串为:%str:~0,-3%
echo 第4个字符为:%str:~3,1%
echo 第4个及其之后的3个字符为:%str:~3,4%
echo 最后一个字符为:%str:~-1%
echo 最后一个字符为:%str:~-1,1%
echo 最后一个字符为:%str:~-1,2%
echo 倒数第4个字符为:%str:~-4,1%
echo 倒数第4个及其之后的字符为:%str:~-4%
echo 倒数第4个及其之后的1个字符为:%str:~-4,2%
echo 倒数第4个及其之后的2个字符为:%str:~-4,3%
pause

这段代码真难理解...


echo 第4个及其之后的3个字符为:%str:~3,4%
这个理解为 第4及之后的3个字符就是 4567
echo 第4个字符为:%str:~3,1%
哪这个不是可以理解为 第1个及之后的3个字符,哪不就是 1234 为什么显示是4..不懂.

2006-12-22 18:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
redtek
金牌会员





积分 2902
发帖 1147
注册 2006-9-21
状态 离线
『第 14 楼』:  

回fjcyz兄,个人理解大概是这个样子:

ECHO   %STR:~指将偏移量的指针移到变量的哪个地方,从指针处取几个字符%

例:   SET     VAR=ABCDEFG

   ECHO   %VAR:~2,3%
   是指从偏移量0开始移动指针,指向第2个字符: 0,1,2(移动了3次),所以指向了字符: C
   而 %VAR:~2,这里的3% 是指:从指针指定的位置起要取几个字符?
     3,就是指要取3个,当然是从当前指针所指向的位置取3个连续的字符,就是: CDE

   只要数它们从哪里开始,就从0开始数,因为它们的偏移量是从0开始的。


   %VAR:~偏移量,要取几个%

[ Last edited by redtek on 2006-12-22 at 09:07 AM ]

   此帖被 +1 点积分    点击查看详情   
评分人:【 muya05 分数: +1  时间:2006-12-29 07:18




    Redtek,一个永远在网上流浪的人……

_.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
2006-12-22 22:05
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
fjcyz
初级用户





积分 68
发帖 36
注册 2006-12-20
状态 离线
『第 15 楼』:  

谢谢, 这么说就很容易理解了.

2006-12-22 22:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: