|  | 
 
| junyee 中级用户
 
    
 
 
 积分 253
 发帖 112
 注册 2006-5-31
 状态 离线
 | 
| 『楼 主』:
 通过BAT读取文本的前几个字符
 
使用 LLM 解释/回答一下 
 
 
现有一个文件:01.txt内容为
 123
 132464……
 我想请人帮忙写个批处理,把01.txt重命名
 为123.txt
 具体想实现的功能就是读取该TXT文件的前面几个字符(第一个字符到有空格或换行符处,)并将其作为该文件的新文件名。
 另:
 如果我想把它命名为23.txt怎么写??(想实现的结果同上,再排除字符1)
 
 
 
 
 |  | 
|  2006-11-3 14:51 |  | 
|  | 
 
| junyee 中级用户
 
    
 
 
 积分 253
 发帖 112
 注册 2006-5-31
 状态 离线
 | 
| 『第 2 楼』:
 ↑
 
使用 LLM 解释/回答一下 
 
 
咋没人来帮啊??所学有限,找不着思路
 不要怪我懒 o_o,搜索的话结果太多了~~~
 好乱吖~~ -_-#~~
 
 
 
 
 |  | 
|  2006-11-3 22:48 |  | 
|  | 
 
| NaturalJ0 银牌会员
 
      
 
 
 积分 1181
 发帖 533
 注册 2006-8-14
 状态 离线
 | 
| 『第 3 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
提供个思路for /f ........do (ren ..... & goto.........)
 
 
 
 
 |  | 
|  2006-11-3 22:56 |  | 
|  | 
 
| zerostudy 中级用户
 
    
 
 
 
 积分 266
 发帖 98
 注册 2006-4-21
 状态 离线
 |  | 
|  2006-11-3 23:00 |  | 
|  | 
 
| 不得不爱 超级版主
 
          我爱DOS
 
 
 积分 5310
 发帖 2044
 注册 2005-9-26
 来自 四川南充
 状态 离线
 |  | 
|  2006-11-3 23:16 |  | 
|  | 
 
| youxi01 高级用户
 
     
 
 
 积分 846
 发帖 247
 注册 2006-10-27
 来自 湖南==》广东
 状态 离线
 | 
| 『第 6 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
楼上斑竹似乎会错了楼主的意思啊?!代码改为:
 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 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
  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
 状态 离线
 |  | 
|  2006-11-4 01:31 |  | 
|  | 
 
| 不得不爱 超级版主
 
          我爱DOS
 
 
 积分 5310
 发帖 2044
 注册 2005-9-26
 来自 四川南充
 状态 离线
 |  | 
|  2006-11-4 01:42 |  | 
|  | 
 
| namejm 荣誉版主
 
        batch fan
 
 
 积分 5226
 发帖 1737
 注册 2006-3-10
 来自 成都
 状态 离线
 | 
|    『第 10 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
  请运行以下代码: @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
 
 
 
 
 
 
 
 |  
                  |  尺有所短,寸有所长,学好CMD没商量。
 考虑问题复杂化,解决问题简洁化。
 |  | 
|  2006-11-4 01:50 |  | 
|  | 
 
| 3742668 荣誉版主
 
        
 
 
 
 积分 2013
 发帖 718
 注册 2006-2-18
 状态 离线
 | 
| 『第 11 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
@echo off
 set file=1.txt
 set /p str=<%file% >nul
 for /f %%i in ("%str%") do ren %file% %%i
 
 
用了set还用for,有点画蛇添足,不过在这里的目的只是想向新人介绍一下用set /p 获得文件第一行内容这个大众技巧。 
代码未经测试。 
 
 
 
 
 
 |  | 
|  2006-11-5 01:11 |  | 
|  | 
 
| hxuan999 中级用户
 
    DOS之日
 
 
 积分 337
 发帖 161
 注册 2006-11-4
 状态 离线
 | 
| 『第 12 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
学到东西了. 
 
 
 
 
 |  
                  |  for /f %%h in (`echo hxuan`) do for /f %%x in (`echo hxuan`) do if %%h==%%x nul
 |  | 
|  2006-11-23 06:38 |  | 
|  | 
 
| fjcyz 初级用户
 
   
 
 
 
 积分 68
 发帖 36
 注册 2006-12-20
 状态 离线
 | 
| 『第 13 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
记号,.,,好东东
 @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 楼』:
 
 
使用 LLM 解释/回答一下 
 
 
回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 ]
 
 
 
 
 
 
 
 |  
                  |  Redtek,一个永远在网上流浪的人……
 
 _.,-*~'`^`'~*-,.__.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._,_.,-*~'`^`'~*-,._
 |  | 
|  2006-12-22 22:05 |  | 
|  | 
 
| fjcyz 初级用户
 
   
 
 
 
 积分 68
 发帖 36
 注册 2006-12-20
 状态 离线
 |  | 
|  2006-12-22 22:28 |  |