[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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,嵌套,完全错了。。现在毫无思路 故来求助!谢谢
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 11# fcxk


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

评分人数

    • fcxk: 明白了,谢谢老大的耐心讲解技术 + 1
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 4# Batcher


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

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

这个delims可以同时二个折分符?要是 - 不打空格显示不出来,默认不是自动去空格的吗?

TOP

回复 9# Batcher


    。。。是那句call ren····的问题吗。。。居然是这样- -谢谢!运行没问题了,能改成不用a.txt,改成*.txt吗

TOP

回复 8# sajiawuwu


    把 ren.bat 改成 test.bat
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 7# Batcher


测试结果。一直循环把a.txt第一行的数字赋值给%a,然后死了退出

TOP

回复 6# sajiawuwu


请举例说明什么是死循环
把你的测试数据和测试结果都发出来
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

回复 4# Batcher


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

TOP

@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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

@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
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

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

回复 2# yangfengoo


    现在显示死循环,删除call那句就不会死,但有问题- -另:能不能做到直接找寻.txt呢,不用a.txt

TOP

  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
复制代码

TOP

返回列表