[批处理求助 急求!]: 关于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内的是整条路径 而不是单单一个文件名
。。。。。其实第一个需求我是已经解决了的 但是第二个好麻烦的样子 求解决 谢谢! 展开
获取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内的是整条路径 而不是单单一个文件名
。。。。。其实第一个需求我是已经解决了的 但是第二个好麻烦的样子 求解决 谢谢! 展开
3个回答
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
用法参照以下说明
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很简单,为啥不用
ren很简单,为啥不用
追问
是批量更改。 一个D盘有N个文件我总不能一个一个去改吧!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只是更改文本内的,还是对文件也改名?
追问
额,是把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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询