Board logo

标题: [文本处理] 批处理怎样按照时间顺序依次批量修改文件名为name.txt中的内容? [打印本页]

作者: hrhktkbzyy    时间: 2012-6-1 17:59     标题: 批处理怎样按照时间顺序依次批量修改文件名为name.txt中的内容?

一个文件夹中有若干文件和一个name.txt,name.txt中存放将要重命名这些文件所要用到的文件名,每行一个文件名。现在想用批处理依次将这些文件修改为name.txt中的名字,求高手指点。谢谢!
作者: gawk    时间: 2012-6-1 18:03

name.txt的内容贴几行出来看看
作者: hrhktkbzyy    时间: 2012-6-1 20:45

回复 2# gawk

比如文件夹里面有三个文件分别是a.jpg, b.png, c.jpg;
name.txt里面有三个名字,分别是:
hello
world
hi
我的需求是按照时间从前到后,分别把a.jpg, b.png, c.jpg;变成hello.jpg, world.png, hi.jpg
作者: lvsehuaxue    时间: 2012-6-2 11:27

  1. @echo off&setlocal enabledelayedexpansion
  2. (for /f "delims=" %%i in ('dir /a-d /o-d /b ^|find /v "name.txt"') do (
  3.   set /p v=
  4.   ren "%%i" !v!%%~xi
  5. ))<name.txt
复制代码

作者: hrhktkbzyy    时间: 2012-6-2 12:27

回复 4# lvsehuaxue

测试没有用啊
作者: hrhktkbzyy    时间: 2012-6-7 09:40

自己顶起,希望高手指点。
作者: apang    时间: 2012-6-7 10:14

回复 1# hrhktkbzyy

你的name.txt文件放在哪里?需要重命名文件的文件夹又在哪里?
作者: hrhktkbzyy    时间: 2012-6-7 12:30

回复 7# apang

放在同一个文件夹中。
作者: apang    时间: 2012-6-7 13:07

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in (name.txt) do set/a n+=1&set .!n!=%%a
  3. for /f "delims=" %%a in ('dir /a-d /b /o-d') do (
  4.   if /i not "%%a"=="name.txt" if /i not "%%a"=="%~nx0" (
  5.     set/a m+=1
  6.     if !m! leq !n! call ren "%%a" "%%.!m!%%%%~xa"
  7.   )
  8. )
  9. pause
复制代码

作者: hrhktkbzyy    时间: 2012-6-7 16:35

回复 9# apang

多谢!测试此方法可行。




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