|
dddyjq1
初级用户
积分 175
发帖 108
注册 2008-5-19
状态 离线
|
『楼 主』:
文本文件批量改名
能否帮忙写一个文本文件批量改名的批处理?要求有:将同一文件夹下的按1、2、3....的.TXT文件改成文件开头第一行的文件名,如果第一行有括号"(",则取括号之前的,有逗号","的则全部要取
|
|
2008-5-19 22:30 |
|
|
HAT
版主
积分 9023
发帖 5017
注册 2007-5-31
状态 离线
|
『第
2 楼』:
既有(又有,怎么办?
|
|
|
2008-5-19 22:39 |
|
|
dddyjq1
初级用户
积分 175
发帖 108
注册 2008-5-19
状态 离线
|
|
2008-5-19 22:43 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
4 楼』:
@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 ]
|
简单!简单!再简单! |
|
2008-5-19 23:08 |
|
|
dddyjq1
初级用户
积分 175
发帖 108
注册 2008-5-19
状态 离线
|
『第
5 楼』:
高,谢了,以后好好学习DOS,昨天发现有本站
|
|
2008-5-19 23:11 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
6 楼』:
试着只用一个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 ]
|
批处理之家新域名:www.bathome.net |
|
2008-5-19 23:13 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
7 楼』:
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 ]
|
批处理之家新域名:www.bathome.net |
|
2008-5-19 23:22 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
8 楼』:
Quote: | Originally posted by zw19750516 at 2008-5-19 23:22:
代码有误,楼主是要求用第一行命名,兄弟的怕是用最后一行命名吧,如文本中存在一行以上内容,就达不到楼主的要求了。
[ Last edited by zw19750516 on 2008-5-19 at 11:24 PM ] |
|
是的 修正一下
|
简单!简单!再简单! |
|
2008-5-19 23:25 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
9 楼』:
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=(" %% ... |
|
文件后面多了个.
|
批处理之家新域名:www.bathome.net |
|
2008-5-19 23:31 |
|
|
terse
银牌会员
积分 2404
发帖 946
注册 2005-9-8
状态 离线
|
『第
10 楼』:
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 ]
|
简单!简单!再简单! |
|
2008-5-19 23:39 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
11 楼』:
简化我的化码:
@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 ]
|
批处理之家新域名:www.bathome.net |
|
2008-5-20 00:05 |
|
|
dddyjq1
初级用户
积分 175
发帖 108
注册 2008-5-19
状态 离线
|
|
2008-5-20 00:06 |
|
|
bat-zw
金牌会员
永远的学习者
积分 3105
发帖 1276
注册 2008-3-8
状态 离线
|
『第
13 楼』:
晕,回来一看还有错误,再改:
@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 ]
|
批处理之家新域名:www.bathome.net |
|
2008-5-20 00:50 |
|