中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-08 15:27
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 文本文件批量改名 查看 828 回复 12
楼 主 文本文件批量改名 发表于 2008-05-19 22:30 ·  中国 福建 三明 电信
初级用户
★★
积分 175
发帖 108
注册 2008-05-19 01:24
18年会员
UID 119060
性别 男
状态 离线
能否帮忙写一个文本文件批量改名的批处理?要求有:将同一文件夹下的按1、2、3....的.TXT文件改成文件开头第一行的文件名,如果第一行有括号"(",则取括号之前的,有逗号","的则全部要取
2 发表于 2008-05-19 22:39 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
既有(又有,怎么办?
3 发表于 2008-05-19 22:43 ·  中国 福建 三明 电信
初级用户
★★
积分 175
发帖 108
注册 2008-05-19 01:24
18年会员
UID 119060
性别 男
状态 离线
取(之前的,谢了
4 发表于 2008-05-19 23:08 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线

@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


[ Last edited by terse on 2008-5-19 at 11:40 PM ]
简单!简单!再简单!
5 发表于 2008-05-19 23:11 ·  中国 福建 三明 电信
初级用户
★★
积分 175
发帖 108
注册 2008-05-19 01:24
18年会员
UID 119060
性别 男
状态 离线
高,谢了,以后好好学习DOS,昨天发现有本站
6 试着只用一个for,但比较麻烦: 发表于 2008-05-19 23:13 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线

@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
7 发表于 2008-05-19 23:22 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
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 ...

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

[ Last edited by zw19750516 on 2008-5-19 at 11:24 PM ]
批处理之家新域名:www.bathome.net
8 发表于 2008-05-19 23:25 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
Originally posted by zw19750516 at 2008-5-19 23:22:

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

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

是的 修正一下
简单!简单!再简单!
9 发表于 2008-05-19 23:31 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
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=(" %% ...

文件后面多了个.
批处理之家新域名:www.bathome.net
10 发表于 2008-05-19 23:39 ·  中国 江苏 常州 溧阳市 电信
银牌会员
★★★
积分 2,404
发帖 946
注册 2005-09-08 13:44
20年会员
UID 42345
状态 离线
Originally posted by zw19750516 at 2008-5-19 23:31:

文件后面多了个.

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

[ Last edited by terse on 2008-5-19 at 11:41 PM ]
简单!简单!再简单!
11 简化我的化码: 发表于 2008-05-20 00:05 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线
@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
12 发表于 2008-05-20 00:06 ·  中国 福建 三明 电信
初级用户
★★
积分 175
发帖 108
注册 2008-05-19 01:24
18年会员
UID 119060
性别 男
状态 离线
谢谢各位了
13 晕,回来一看还有错误,再改: 发表于 2008-05-20 00:50 ·  中国 湖南 株洲 电信
金牌会员
★★★★
永远的学习者
积分 3,105
发帖 1,276
注册 2008-03-08 13:00
18年会员
UID 112398
性别 男
状态 离线

@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
论坛跳转: