标题: 文本文件批量改名
[打印本页]
作者: 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 ]