标题: [文件操作] [已解决]求助:批处理提取文本内名字,对应命名 [打印本页]
作者: sajiawuwu 时间: 2015-5-12 09:29 标题: [已解决]求助:批处理提取文本内名字,对应命名
本帖最后由 sajiawuwu 于 2015-5-14 15:35 编辑
一个文件夹内只有一个文本文件和很多M开头命名的图片(M021,M022。。。),现在想把这些图片,按顺序以文本文件内的名字命名,文本内格式如下:- 1 4
- 2 5-
- 3 6
- 4 20-
- 5
- 6
- 7
- 8
复制代码
要求就是:提取出4,5,6,20四个名字(不要后面的“-”),分别给4个M开头的图片按顺序重命名。
我写了两个for,嵌套,完全错了。。现在毫无思路 故来求助!谢谢
作者: yangfengoo 时间: 2015-5-12 12:02
- @ECHO off&setlocal EnableDelayedExpansion
- for %%a in (M*) do SET/a n+=1&set #!n!=%%a
- for /f "tokens=2 delims=- " %%a in (a.txt) do (
- SET/a nn+=1
- call ren %%#!nn!%% %%a.jpg
- )
- 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 这样可以取出那四个数字,剩下的功能你再尝试一下吧。- @echo off
- for /f "tokens=2 delims=- " %%i in (1.txt) do (
- if "%%i" neq "" (
- echo %%i
- )
- )
- pause
复制代码
作者: Batcher 时间: 2015-5-13 13:13
@fcxk 你的两层for循环思路可以改成这样- @echo off
- for /f "tokens=2" %%i in (1.txt) do (
- for /f "delims=-" %%j in ("%%i") do (
- echo %%j
- )
- )
- 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://bbs.bathome.net/) |
Powered by Discuz! 7.2 |