找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 33391|回复: 11

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

[复制链接]
发表于 2015-5-12 09:29:42 | 显示全部楼层 |阅读模式
本帖最后由 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,嵌套,完全错了。。现在毫无思路 故来求助!谢谢

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-5-12 12:02:56 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2015-5-12 12:59:39 | 显示全部楼层
本帖最后由 sajiawuwu 于 2015-5-13 10:11 编辑

回复 2# yangfengoo


    现在显示死循环,删除call那句就不会死,但有问题- -另:能不能做到直接找寻.txt呢,不用a.txt
发表于 2015-5-13 13:10:20 | 显示全部楼层
@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
复制代码
发表于 2015-5-13 13:13:54 | 显示全部楼层
@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
复制代码
 楼主| 发表于 2015-5-13 13:19:16 | 显示全部楼层
本帖最后由 sajiawuwu 于 2015-5-13 13:23 编辑

回复 4# Batcher


    谢谢大大,4个数字我会取,就是分别对应命名不行,我是打算用嵌套for来分别取改之前的名字和改之后的名字变量来改名的,2楼的代码也死循环。。在尝试修改
发表于 2015-5-13 14:55:40 | 显示全部楼层
回复 6# sajiawuwu


请举例说明什么是死循环
把你的测试数据和测试结果都发出来
 楼主| 发表于 2015-5-13 15:48:57 | 显示全部楼层
回复 7# Batcher


测试结果。一直循环把a.txt第一行的数字赋值给%a,然后死了退出
发表于 2015-5-13 16:14:05 | 显示全部楼层
回复 8# sajiawuwu


    把 ren.bat 改成 test.bat
 楼主| 发表于 2015-5-13 16:23:05 | 显示全部楼层
回复 9# Batcher


    。。。是那句call ren····的问题吗。。。居然是这样- -谢谢!运行没问题了,能改成不用a.txt,改成*.txt吗
发表于 2015-5-13 17:01:37 | 显示全部楼层
回复 4# Batcher


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

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

这个delims可以同时二个折分符?要是 - 不打空格显示不出来,默认不是自动去空格的吗?
发表于 2015-5-13 17:03:23 | 显示全部楼层
回复 11# fcxk


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

评分

参与人数 1技术 +1 收起 理由
fcxk + 1 明白了,谢谢老大的耐心讲解

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 05:26 , Processed in 0.018872 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表