Board logo

标题: [文件操作] [已解决]求助:批处理提取文本内名字,对应命名 [打印本页]

作者: sajiawuwu    时间: 2015-5-12 09:29     标题: [已解决]求助:批处理提取文本内名字,对应命名

本帖最后由 sajiawuwu 于 2015-5-14 15:35 编辑

一个文件夹内只有一个文本文件和很多M开头命名的图片(M021,M022。。。),现在想把这些图片,按顺序以文本文件内的名字命名,文本内格式如下:
  1. 1  4
  2. 2  5-
  3. 3  6
  4. 4  20-
  5. 5  
  6. 6  
  7. 7  
  8. 8  
复制代码
要求就是:提取出4,5,6,20四个名字(不要后面的“-”),分别给4个M开头的图片按顺序重命名。
我写了两个for,嵌套,完全错了。。现在毫无思路 故来求助!谢谢
作者: yangfengoo    时间: 2015-5-12 12:02

  1. @ECHO off&setlocal EnableDelayedExpansion
  2. for %%a in (M*) do SET/a n+=1&set #!n!=%%a
  3. for /f "tokens=2 delims=- " %%a in (a.txt) do (
  4.   SET/a nn+=1
  5.   call ren %%#!nn!%% %%a.jpg
  6.   )
  7. pause
复制代码

作者: sajiawuwu    时间: 2015-5-12 12:59

本帖最后由 sajiawuwu 于 2015-5-13 10:11 编辑

回复 2# yangfengoo


    现在显示死循环,删除call那句就不会死,但有问题- -另:能不能做到直接找寻.txt呢,不用a.txt
作者: Batcher    时间: 2015-5-13 13:10

@fcxk 这样可以取出那四个数字,剩下的功能你再尝试一下吧。
  1. @echo off
  2. for /f "tokens=2 delims=- " %%i in (1.txt) do (
  3.     if "%%i" neq "" (
  4.         echo %%i
  5.     )
  6. )
  7. pause
复制代码

作者: Batcher    时间: 2015-5-13 13:13

@fcxk 你的两层for循环思路可以改成这样
  1. @echo off
  2. for /f "tokens=2" %%i in (1.txt) do (
  3.     for /f "delims=-" %%j in ("%%i") do (
  4.         echo %%j
  5.     )
  6. )
  7. pause
复制代码

作者: sajiawuwu    时间: 2015-5-13 13:19

本帖最后由 sajiawuwu 于 2015-5-13 13:23 编辑

回复 4# Batcher


    谢谢大大,4个数字我会取,就是分别对应命名不行,我是打算用嵌套for来分别取改之前的名字和改之后的名字变量来改名的,2楼的代码也死循环。。在尝试修改
作者: Batcher    时间: 2015-5-13 14:55

回复 6# sajiawuwu


请举例说明什么是死循环
把你的测试数据和测试结果都发出来
作者: sajiawuwu    时间: 2015-5-13 15:48

回复 7# Batcher


测试结果。一直循环把a.txt第一行的数字赋值给%a,然后死了退出
作者: Batcher    时间: 2015-5-13 16:14

回复 8# sajiawuwu


    把 ren.bat 改成 test.bat
作者: sajiawuwu    时间: 2015-5-13 16:23

回复 9# Batcher


    。。。是那句call ren····的问题吗。。。居然是这样- -谢谢!运行没问题了,能改成不用a.txt,改成*.txt吗
作者: fcxk    时间: 2015-5-13 17:01

回复 4# Batcher


    你那个判断空值是做什么用的(空格?)

@echo off
for /f "tokens=2 delims=- " %%i in (1.txt) do echo %%i
pause
好像这样也可以显示出结果

这个delims可以同时二个折分符?要是 - 不打空格显示不出来,默认不是自动去空格的吗?
作者: Batcher    时间: 2015-5-13 17:03

回复 11# fcxk


判断文件的第二列是否有内容
delims可以设置两个或多个列分隔符




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2