能否帮忙写一个文本文件批量改名的批处理?要求有:将同一文件夹下的按1、2、3....的.TXT文件改成文件开头第一行的文件名,如果第一行有括号"(",则取括号之前的,有逗号","的则全部要取
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
@echo off
for /f "tokens=*" %%i in ('dir /b *.txt^|findstr /i "^.*"') do call:lp "%%i"
pause&goto :eof
:lp
for /f "usebackq delims=(" %%a in (%1) do ren %1 "%%a%~x1"&goto :eof
@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
)
Originally posted by terse at 2008-5-19 23:08:
@echo off
for /f "delims=" %%i in ('dir /b *.txt^|findstr /i "^.*"') do (
for /f "usebackq delims=(" %%a in ("%%i") do ren "%%i" &qu ...
Originally posted by zw19750516 at 2008-5-19 23:22:
代码有误,楼主是要求用第一行命名,兄弟的怕是用最后一行命名吧,如文本中存在一行以上内容,就达不到楼主的要求了。
[ Last edited by zw19750516 on 2008-5-19 at 11:24 PM ]
Originally posted by terse at 2008-5-19 23:08:
@echo off
for /f "tokens=*" %%i in ('dir /b *.txt^|findstr /i "^.*"') do call:lp "%%i"
pause&goto :eof
:lp
for /f "usebackq delims=(" %% ...
Originally posted by zw19750516 at 2008-5-19 23:31:
文件后面多了个.
@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
)
@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
)