Board logo

标题: 通过BAT读取文本的前几个字符 [打印本页]

作者: junyee     时间: 2006-11-3 14:51    标题: 通过BAT读取文本的前几个字符

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

作者: junyee     时间: 2006-11-3 22:48    标题:

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

作者: NaturalJ0     时间: 2006-11-3 22:56
提供个思路 for /f ........do (ren ..... & goto.........)

作者: zerostudy     时间: 2006-11-3 23:00
功力有限.呵呵.帮不了你的了...帮你顶下..顺便问下.DOS下.空格和回车用什么表示?

作者: 不得不爱     时间: 2006-11-3 23:16
楼上的会忽略空格 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 ]

作者: youxi01     时间: 2006-11-4 00:25
楼上斑竹似乎会错了楼主的意思啊?! 代码改为: FOR /F %%i in (01.txt) do rename 01.txt %%i.txt & goto :eof

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

作者: junyee     时间: 2006-11-4 01:31
ren 01.txt %var:~1%.txt 想问下这个什么意思?? :~1%

作者: 不得不爱     时间: 2006-11-4 01:42
%var:~1%的意思是取除第一个字符外的所有字符 5楼代码已经改了

作者: namejm     时间: 2006-11-4 01:50
  请运行以下代码:
@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

作者: 3742668     时间: 2006-11-5 01: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 获得文件第一行内容这个大众技巧。 代码未经测试。

作者: hxuan999     时间: 2006-11-23 06:38
学到东西了.

作者: fjcyz     时间: 2006-12-22 18:47
记号,.,,好东东 @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..不懂.

作者: redtek     时间: 2006-12-22 22:05
回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 ]

作者: fjcyz     时间: 2006-12-22 22:28
谢谢, 这么说就很容易理解了.

作者: 26933062     时间: 2006-12-29 01:08
学习了

作者: muya05     时间: 2006-12-29 07:17
RE redtek 兄: 看了兄的解答有种顿悟的感觉,但下面这行代码不知怎么理解(用指针偏移怎么说): echo %var:~2,-3% (意思我知道是:从第三个字符取,排除后三个) 谢谢!

作者: whzemuch     时间: 2007-1-2 05:08
学习中

作者: flamey     时间: 2007-1-3 05:29
学到东西了!谢谢!!!

作者: tghksj     时间: 2007-1-3 05:43
谢谢11楼 3742668 加分学习了....

作者: hankee     时间: 2007-2-23 01:41
redtek,讲的真透彻,看懂了,谢谢~

作者: hankee     时间: 2007-2-23 01:53
Originally posted by muya05 at 2006-12-28 06:17 PM: RE redtek 兄: 看了兄的解答有种顿悟的感觉,但下面这行代码不知怎么理解(用指针偏移怎么说): echo %var:~2,-3% (意思我知道是:从第三个字符取,排除后三个) 谢谢!
echo %var:~2,-3% 这个句子,个人以为这样理解,假如我们把echo %var:~2,-3%里的",-3"去掉的话.我们得到的结果就是从第三个字符开始取其后面的全部字符,加上",-3",就可以理解为,在原来的基础上减去后面三个符

作者: hxwxyz     时间: 2007-9-23 19:24
HOHO~~~学习

作者: lzmuhioin     时间: 2007-9-23 22:54
Originally posted by youxi01 at 2006-11-4 12:25 AM: 楼上斑竹似乎会错了楼主的意思啊?! 代码改为: FOR /F %%i in (01.txt) do rename 01.txt %%i.txt & goto :eof
我怎么确得7楼的和5楼的是一个意思啊?抱歉,还不是很懂,呵呵

作者: BBMARK     时间: 2007-9-24 12:00
厉害,在这里学到不少,谢谢

作者: huahua0919     时间: 2007-11-17 15:34
强烈建议以后用redtek的解释方法!顶你1

作者: zqdarkday     时间: 2007-11-17 17:25
个人觉得str:~%%i比VB中mid right left3个函数好用多了,为什么不使用这种用法呢?! 哎!!!

作者: joyoustar     时间: 2008-1-14 11:48
redtek讲解不错,谢谢

作者: lixuej     时间: 2008-1-14 17:36
怎么也看不懂。