Board logo

标题: 文本文件批量改名 [打印本页]

作者: dddyjq1     时间: 2008-5-19 22:30    标题: 文本文件批量改名

能否帮忙写一个文本文件批量改名的批处理?要求有:将同一文件夹下的按1、2、3....的.TXT文件改成文件开头第一行的文件名,如果第一行有括号"(",则取括号之前的,有逗号","的则全部要取
作者: HAT     时间: 2008-5-19 22:39
既有(又有,怎么办?
作者: dddyjq1     时间: 2008-5-19 22:43
取(之前的,谢了
作者: terse     时间: 2008-5-19 23:08

@echo off
for /f "tokens=*" %%i in ('dir /b *.txt^|findstr /i "^[1-9].*"') do call:lp "%%i"
pause&goto :eof
:lp
for /f "usebackq delims=(" %%a in (%1) do ren %1 "%%a%~x1"&goto :eof
[ Last edited by terse on 2008-5-19 at 11:40 PM ]
作者: dddyjq1     时间: 2008-5-19 23:11
高,谢了,以后好好学习DOS,昨天发现有本站
作者: bat-zw     时间: 2008-5-19 23:13    标题: 试着只用一个for,但比较麻烦:


@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b *.txt') do (
    set /p a=<%%i
    set str=!a!&set a=!a:(=!
    if not "!a!"=="!str!" set a=&call :lp
    ren "%%i" "!a!.txt"
)
echo 重命名完毕!
pause>nul&goto :eof
:lp
if not "%str:~,1%"=="(" (
   set b=%str:~,1%
   set a=!a!%b%
   set str=%str:~1%
   goto lp
)
[ Last edited by zw19750516 on 2008-5-20 at 12:55 AM ]
作者: bat-zw     时间: 2008-5-19 23:22


  Quote:
Originally posted by terse at 2008-5-19 23:08:
[code]
@echo off
for /f "delims=" %%i in ('dir /b *.txt^|findstr /i "^[1-9].*"') do (
for /f "usebackq delims=(" %%a in ("%%i") do ren "%%i" &qu ...

代码有误,楼主是要求用第一行命名,兄弟的怕是用最后一行命名吧,如文本中存在一行以上内容,就达不到楼主的要求了。

[ Last edited by zw19750516 on 2008-5-19 at 11:24 PM ]
作者: terse     时间: 2008-5-19 23:25


  Quote:
Originally posted by zw19750516 at 2008-5-19 23:22:

代码有误,楼主是要求用第一行命名,兄弟的怕是用最后一行命名吧,如文本中存在一行以上内容,就达不到楼主的要求了。

[ Last edited by zw19750516 on 2008-5-19 at 11:24 PM ]

是的  修正一下
作者: bat-zw     时间: 2008-5-19 23:31


  Quote:
Originally posted by terse at 2008-5-19 23:08:
[code]
@echo off
for /f "tokens=*" %%i in ('dir /b *.txt^|findstr /i "^[1-9].*"') do call:lp "%%i"
pause&goto :eof
:lp
for /f "usebackq delims=(" %% ...

文件后面多了个.
作者: terse     时间: 2008-5-19 23:39


  Quote:
Originally posted by zw19750516 at 2008-5-19 23:31:

文件后面多了个.

zw19750516真细心  我本想添上.txt的  后来还是没用上去

[ Last edited by terse on 2008-5-19 at 11:41 PM ]
作者: bat-zw     时间: 2008-5-20 00:05    标题: 简化我的化码:


@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b *.txt') do (
    set /p str=<%%i&call :lp
    ren "%%i" "!a!.txt"&set "a="
)
echo 重命名完毕!
pause>nul&goto :eof
:lp
if defined str if not "%str:~,1%"=="(" (
   set b=%str:~,1%
   set a=!a!%b%
   set str=%str:~1%
   goto lp
)
[ Last edited by zw19750516 on 2008-5-20 at 12:07 AM ]
作者: dddyjq1     时间: 2008-5-20 00:06
谢谢各位了
作者: bat-zw     时间: 2008-5-20 00:50    标题: 晕,回来一看还有错误,再改:


@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /b *.txt') do (
    set /p str=<%%i&call :lp
    ren "%%i" "!a!.txt"&set a=&set b=
)
echo 重命名完毕!
pause>nul&goto :eof
:lp
if defined str if not "%str:~,1%"=="(" (
   set b=%str:~,1%
   set a=!a!!b!
   set str=%str:~1%
   goto lp
)
[ Last edited by zw19750516 on 2008-5-20 at 12:52 AM ]