[批处理求助 急求!]: 关于BAT批量重命名与恢复。

需求:获取D盘下的所有文件写入到C:\data.txt然后读取C:\data.txt把data.txt的第一行(第一条路径)重命名为1.xxx第二行重命名为2.xxx第三... 需求:
获取D盘下的所有文件写入到C:\data.txt
然后读取C:\data.txt

把data.txt的第一行(第一条路径) 重命名为 1.xxx
第二行重命名为 2.xxx
第三行...
第四行...
----------------------------------------------------------------------
需求2:
这个有点麻烦,如以上操作都完成了也就是所有文件都按照1,2...这样被重命名了
最后怎么把对应1.xxx,2.xxx重命名回原文件名。

又或许是重新获取D盘下所有文件写入到B.txt
再读取B.txt 然后重命名为data.txt 内的文件名

但是data.txt内的是整条路径 而不是单单一个文件名

。。。。。其实第一个需求我是已经解决了的 但是第二个好麻烦的样子 求解决 谢谢!
展开
 我来答
匿名用户
2015-01-12
展开全部
@ECHO OFF
set batchName=批量重命名-替换文件或者文件夹的字符串
TITLE
忆林子--%batchName%
rem
[HEAD========================================================HEAD]
rem
名称:批量重命名
rem 作者:忆林子
rem 概要:批量替换文件或者文件夹的字符串
rem 用法:
rem
1、将需要批量重命名的文件所在的那个文件夹拖到该处理上
rem 2、按提示输入要替换的字符串,然后按回车。
rem
3、按提示输入想要替换为的字符串,然后按回车。
rem
rem 考虑到多次操作,该批处理加了循环操作处理,可进行多次替换,而不
rem
需要多次拖文件夹。
rem
rem 修正履历
rem 修改者 修正方式 版本号 备考
rem
[MID==========================================================MID]
rem 忆林子 新建
Ver.2010.03.06-001
rem
[FOOT========================================================FOOT]
COLOR
0a
:main
set /a count=%count%+1
set /p oldStr=[请输入想要替换的字符串]
set /p
newStr=[请输替换后的字符串]
for /f "tokens=*" %%a in (
'dir "%~1" /a /b'
) do
(
SETLOCAL ENABLEDELAYEDEXPANSION
set "newFileName=%%~nxa"
set
"newFileName=!newFileName:%oldStr%=%newStr%!"
ren "%~1\%%~nxa"
"!newFileName!"
ENDLOCAL
)
ECHO.
echo 第 %count%
次替换已完成
ECHO.
goto :main
EXIT

用法参照以下说明
匿名用户
2015-01-12
展开全部
不用ren你想如何改文件名
ren很简单,为啥不用
追问
是批量更改。  一个D盘有N个文件我总不能一个一个去改吧!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
依梦琴瑶
高粉答主

2015-01-12 · 说的都是干货,快来关注
知道顶级答主
回答量:6.9万
采纳率:82%
帮助的人:1.7亿
展开全部
只是更改文本内的,还是对文件也改名?
追问
额,是把D盘下的所有文件路径写入data.txt  然后读取data.txt内的路径 把文本内的第一条路径的文件重命名为1.xxx 第二条重命名为2.xxx  ...        

以上操作完成后关键的是怎么把1.xxx 重命名回原来的文件名 (data.txt 还在的)。
追答

OK,明白了。代码如下:

@echo off&setlocal EnableDelayedExpansion
if exist "C:\data.txt" del "C:\data.txt"
cd /d D:\
for /f "delims=" %%a in ('dir /a-d/s/b/on') do (
set /a n+=1
ren "%%~a" "!n!%%~xa"
echo %%~a^|%%~dpa!n!%%~xa>>C:\data.txt
)
echo 文件名已按数字顺序命名。按下任意键后,将恢复原文件名。
pause>nul
for /f "tokens=1,2* delims=|" %%a in (C:\data.txt) do ren "%%~b" "%%~nxa"
pause
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式