DOS 批量处理改名?

要求
1、是一个.bat文档批量处理
2、可以先结束进程如结束123.exe
3、能够自动查找123.exe路径,并且可以重命名为123.……
或者if多个路径选择查找如:C:\Program Files ,D:\edit 可能有123.exe
4、要有源代码

@echo off
TASKKILL /S system /F /IM 123.exe /T

@echo off

:: 8-31 增加记录日志功能
:: 9-1 增加全盘搜索、完全匹配查找功能
:: 9-2 增加多文件搜索,可自定义添加过滤路径
:: 9-3 增加了搜索文件名时检测“路径中含有搜索的文件名字符串而文件名中没有”就删除掉这个路径
增加了搜索文件名时检测“路径中含有搜索的文件名字符串”就删除掉这个路径,这只是个路径
:: 9-4 增加了搜索文件名过滤,不让用户搜索完全匹配的"windows","system32"等,用户可手动添加删除

:: 各临时文件说明
:: %dati%_9.txt 高级搜索中存放要过滤的文件夹的路径的值
:: %dati%_8.txt 高级搜索中存放"检查本地磁盘并判断类型"查到的值
:: %dati%_7.txt 高级搜索中存放所有本地磁盘盘符的值
:: %dati%_4.txt 高级搜索中存放直接dir路径未经过滤的值
:: %dati%_6.txt 高级搜索中存放直接dir路径并find names后 未经过滤的值
::
:: %dati%_temp.txt 为了高级搜索后确认是否再进行文件名完全匹配查找而生成的暂时临时文件
:: %dati%_1.txt 模糊搜索中存放要过滤的文件夹的路径的值(默认只是本程序所在当前文件夹)
:: %dati%_2.txt 模糊搜索中存放直接dir路径未经过滤的值
:: %dati%_3.txt 模糊搜索中存放过滤路径后dir的值,第一行空,第二行显示------*.txt
:: %dati%_10.txt 高级搜索dir路径并find names后要find_nx而长生的临时文件
:: g_names.txt 高级搜索中存放要查找的文件名s

:: 原理:通过dir路径|find符合所要搜索文件名的字符串来搜索

:000000
cls
mode con lines=30
title 查找文件并操作(查看路径\复制\删除),记录日志 by:Ye - *
echo ________________________________________________________________________________
echo 使用说明:
echo 复制文件日志 copy_log.txt 复制文件默认复制到目录 copy\
echo 删除文件日志 del_log.txt 删除文件默认备份目录 del_backup\
echo 批量恢复日志 backup_log.txt 搜索到文件时的搜索文件名日志 fc_name.txt
echo ________________________________________________________________________________
echo 注意事项:
echo 1 建议使用时请把本程序放在一个单独的文件夹下,因为默认是不搜索程序当前所在目
echo 录的,还有工作中要生成好多临时文件在目录下
echo 2 输入要查找的文件名时,为了更准确的找到文件请尽量带上后缀
echo 连在一起的字符搜索就好,不要使用*,如搜索***x.txt,直接填x.txt搜索就好
echo 3 输入搜索路径时,如搜索 c 盘则输入 c:\ ,建议去地址栏中直接复制地址粘贴过来
echo 4 任何位置输入半角状态下的以下11个符号中的任何一个都会引起无法预料的错误
echo 它们分别是\、/、:、*、?、"、<、>、(、)、|
echo 除路径中可以输入冒号(紧跟盘符)和反斜杠符号
echo 5 使用本程序建议系统时间使用24小时制
echo ________________________________________________________________________________
echo 按任意键进入查找......
pause>nul

:start
cls
mode con lines=24
echo ________________________________________________________________________________
echo.
echo 模糊搜索:只支持单文件单目录搜索,不支持过滤目录,不支持文件名完全匹配查找
echo.
echo 高级搜索:支持多文件单目录或全盘同时搜索,支持过滤目录,支持文件名完全匹配查找
echo.
echo m 模糊搜索 ^| g 高级搜索
echo ________________________________________________________________________________
set mg_xz=
set /p mg_xz= 请输入操作代码:
if "%mg_xz%"=="" (echo 无效动作 & pause && goto start)
for %%i in (m g) do if %mg_xz%==%%i goto mg_%%i
echo 无效动作 & pause && goto start

:: --------------------------------------------------------------------------------------------------------------------
:mg_m
cls
title 模糊搜索
echo.
echo.
set name=
set lj=
set /p name= 请输入要查找的文件名:
if "%name%"=="" echo 请输入正确的文件名 &pause& goto mg_m
set /p lj= 请输入搜索路径:
if "%lj%"=="" echo 请输入正确的路径 &pause& goto mg_m
echo 请稍侯......
:: 此处获取当前日期时间变量做文件名是为了防止当用一个固定文件名时程序无故终止而这个固定文件名没有删除,可能导至下次查找错误
:: 还有个好处是恢复删除文件方便多了,再后面就会看出
:: 要是不判断比如说凌晨2点,则%dati%的值就像是 06-08-31 20000,中间多了个空格,后面就会出错,我12小时制
if %time:~0,2% lss 10 (set dati=%date:~2,8%0%time:~1,1%%time:~3,2%%time:~6,2%) else (set dati=%date:~2,8%%time:~0,2%%time:~3,2%%time:~6,2%)
:: 不搜索程序当前所在目录
echo %cd%>>%dati%_1.txt
dir /a /s /b "%lj%" |find "%name%">>%dati%_2.txt
for /f "tokens=* delims=" %%i in (%dati%_1.txt) do (find /i /v %dati%_2.txt "%%i">>%dati%_3.txt)
echo.>>%dati%.txt
for /f "skip=2 tokens=* delims=" %%a in (%dati%_3.txt) do (echo %%a>>%dati%.txt)

:: 如果%dati%.txt文件无内容goto no,有则goto ok
findstr . %dati%.txt>nul && (echo %dati%,搜索文件名,%name%,搜索成功>>fc_name.txt & goto ok)||goto no
:: echo 记录以前所有搜索到文件时的搜索文件名,后面利用文件名恢复时用

:: --------------------------------------------------------------------------------------------------------------------
:mg_g
del /q g_names_temp.txt g_names.txt g_names_guolv.txt g_names_guolv_jiance.txt
cls
title 高级搜索
echo ________________________________________________________________________________
echo.
echo 支持多文件名同时搜索(最多5个)
echo.
echo 输入多文件名时,中间用'半脚状态下的逗号'隔开,格式例如:a.txt,b.txt,c.txt,d.txt
echo ________________________________________________________________________________
set names=
set /p names= 请输入要查找的文件名:
if "%names%"=="" echo 请输入正确的文件名 &pause& goto mg_g
echo %names%>g_names_temp.txt

:: 要过滤的文件名
echo windows>>g_names_guolv.txt
echo system32>>g_names_guolv.txt
:: 此处可继续添加文件名过滤,前提是保证格式正确
cd.>g_names_guolv_jiance.txt
for /f "tokens=1 delims=," %%a in (g_names_guolv.txt) do (>>g_names_guolv_jiance.txt findstr /x /i "%%a"<g_names_temp.txt)
echo.
findstr . g_names_guolv_jiance.txt>nul && goto g_names_guolv_jiance_no||goto g_names_guolv_jiance_ok

:g_names_guolv_jiance_no
echo 你输入的%names%文件名含有被过滤的字符,按任意键重新输入别的文件名 &pause>nul& goto mg_g

:g_names_guolv_jiance_ok
for /f "tokens=1,2,3,4,5 delims=," %%i in (g_names_temp.txt) do (
if not "%%i"=="" echo %%i>>g_names.txt
if not "%%j"=="" echo %%j>>g_names.txt
if not "%%k"=="" echo %%k>>g_names.txt
if not "%%l"=="" echo %%l>>g_names.txt
if not "%%m"=="" echo %%m>>g_names.txt
)

del /q g_names_temp.txt g_names_guolv.txt g_names_guolv_jiance.txt

:mg_g_guolv
:: 获取日期+时间变量
set dati=
if %time:~0,2% lss 10 (set dati=%date:~2,8%0%time:~1,1%%time:~3,2%%time:~6,2%) else (set dati=%date:~2,8%%time:~0,2%%time:~3,2%%time:~6,2%)
cls
echo.
echo.
echo 搜索时排除的目录,目录下及子目录下的所有文件将不会被搜索
echo ________________________________________________________________________________
echo.
:mg_g_guolv_zj
set guolv_wjj_zj=
set /p guolv_wjj_zj= 不需要搜索本程序所在的当前文件夹[y/n]:
if "%guolv_wjj_zj%"=="" (echo 无效动作 & pause && goto mg_g_guolv)
if "%guolv_wjj_zj%"=="y" (echo %cd%>>%dati%_9.txt & goto mg_g_guolv_hsz)
if "%guolv_wjj_zj%"=="n" goto mg_g_guolv_hsz
echo 无效动作 & pause && goto mg_g_guolv

:mg_g_guolv_hsz
echo.
set guolv_wjj_hsz=
set /p guolv_wjj_hsz= 不需要搜索回收站[y/n]:
if "%guolv_wjj_hsz%"=="" (echo 无效动作 & pause && goto mg_g_guolv)
if "%guolv_wjj_hsz%"=="y" (
@call :dir_all & for /f "tokens=* delims= " %%i in (%dati%_7.txt) do (echo %%iRECYCLER>>%dati%_9.txt)
goto mg_g_guolv_mulu
)
if "%guolv_wjj_hsz%"=="n" goto mg_g_guolv_mulu
echo 无效动作 & pause && goto mg_g_guolv

:mg_g_guolv_mulu
echo.
set guolv_wjj_mulu=
set /p guolv_wjj_mulu= 是否还有不需要搜索的目录[y/n]:
if "%guolv_wjj_mulu%"=="" (echo 无效动作 & pause && goto mg_g_guolv)
if %guolv_wjj_mulu%==y goto mg_g_guolv_addmulu
if %guolv_wjj_mulu%==n goto mg_g_guolv_end
echo 无效动作 & pause && goto mg_g_guolv
: mg_g_guolv_addmulu
set guolv_wjj_mulus=
set /p guolv_wjj_mulus= 请输入目录的绝对路径(支持输入多路径,路径之间用'半脚状态下的逗号'隔开,留空表示没有不需要搜索的目录):
if "%guolv_wjj_mulus%"=="" goto mg_g_guolv_end
echo %guolv_wjj_mulus%>%dati%_9_temp.txt
for /f "tokens=1,2,3 delims=," %%i in (%dati%_9_temp.txt) do (
if not "%%i"=="" if exist %%i echo %%i>>%dati%_9.txt
if not "%%j"=="" if exist %%j echo %%j>>%dati%_9.txt
if not "%%k"=="" if exist %%k echo %%k>>%dati%_9.txt
)
:: del /q %dati%_9_temp.txt

:mg_g_guolv_end
echo ________________________________________________________________________________
echo 按任意键继续......
pause>nul

:mg_g_qr
cls
echo ________________________________________________________________________________
echo.
echo 你要查找的文件名是:%names%
echo.
echo 不搜索本程序所在的文件夹[y/n]:%guolv_wjj_zj%
echo.
echo 不搜索回收站[y/n]:%guolv_wjj_hsz%
echo.
echo 不搜索下列目录:%guolv_wjj_mulus%
echo.
echo 0 返回重新输 ^| y 继续下一步
echo ________________________________________________________________________________
set qr_xz=
set /p qr_xz= 请输入操作代码:
if "%qr_xz%"=="" (echo 无效动作 & pause && goto mg_g_qr)
if "%qr_xz%"=="y" goto mg_g_lj
if "%qr_xz%"=="0" del /q %dati%_9.txt & goto mg_g
echo 无效动作 & pause && goto mg_g_qr
:mg_g_lj
cls
echo ________________________________________________________________________________
echo.
echo 只支持单路径搜索,可以全盘搜索(只限xp sp2),全盘搜索输入all,包括光盘和U盘
echo ________________________________________________________________________________
echo.
set lj=
set /p lj= 请输入搜索路径:
if "%lj%"=="" echo 请输入正确的路径 &pause& goto mg_m_lj
if "%lj%"=="all" goto all_find
echo.
echo 请稍侯......
dir /a /s /b "%lj%">>%dati%_4.txt
dir /ad /s /b "%lj%">>%dati%_fcname_mulu_temp.txt

:fc_guolv_lj
:: dir搜索路径(生成%dati%_4.txt)后find 搜索name (生成%dati%_6_temp.txt) 再 call :find_nx 后生成%dati%_6.txt
for /f "tokens=1 delims=*" %%a in (g_names.txt) do (
>>%dati%_6_temp.txt find /i "%%a"<%dati%_4.txt && call :find_nx %%a
>>%dati%_fcname_mulu.txt find /i "%%a"<%dati%_fcname_mulu_temp.txt
)

没有粘贴完,到http://www.cn-dos.net/forum/viewthread.php?tid=22906查看
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-01-16
天下文章大家抄!

其实批量修改文件名字根本不要大家去编。

现成的东西拿来用多方便!

下载个看图软件ACDSEE,这基本上是计算机中常备的工具软件了,浏览图片是他的主要功能,但是他的批量修改文件名字的功能并不弱,非常方便!

只要你选择好需要改名的文件(可以单选、多选或全选),设置好要改成什么样形式的名字,从什么编号开始,点击确定就改完了,真是太直观、容易了!

如果单纯的需要从dos修修改文件名字,一个命令:
ren a*.* b*.* 这样的就够了,关键是文件名部分的框架掌握好,很容易。*代表若干个字符,?代表一个字符位置。

如果想快速方便、随心所欲,可以用高级语言自己做批量修改的程序,既比dos容易实现,也比dos命令更容易控制结果。
第2个回答  2008-01-16
下面的代码有些地方你自己根据实际情况修改一下。

@echo off
set num=0
set savefile=恢复改名
if {%1}=={} goto :useageexit
if {%2}=={} goto :useageexit
if {%3}=={} goto :useageexit
if exist %savefile%.bat (
attrib %savefile%.bat -h -s -r
)
echo @echo off >%savefile%.bat
for /R %3 %%v IN (%1.%2) DO (
call:rn %%v %2
)
echo 已经执行完改名!
echo echo 恢复完毕!>>%savefile%.bat
echo del %savefile%.bat >>%savefile%.bat
echo pause >>%savefile%.bat
goto :EOF
:useageexit
echo ● 站好了听 ●
echo █┳ 我给你说使 ┗█┛
echo ┏┓ 用方法! ┛┗
echo ----------------------------------------------------------
echo 本程序由小朱制造
echo ----------------------------------------------------------
echo 使用方法: %~n0 文件名 扩展名 路径
echo ----------------------------------------------------------
echo 功能:
echo 本程序将指定类型的文件批量改名为以数字递增表示的文件名;
echo 参数说明:
echo ----------------------------------------------------------
pause
echo 文件名:
echo 指不包括扩展名的纯文件名,可以使用通配符('*','?');
echo 扩展名:
echo 就是扩展名了啊,不要加点('.'),也可以使用通配符号('*','?');
echo 路径:
echo 就是路径,当用点(.)的时候表示当前路径(程序所在路径);
echo 注意:
echo 指定一个路径后,此路径下以及它的所有子路径下的所有符合的文件都会被改名;
echo ----------------------------------------------------------
echo 例子:
echo 如你要将整个D:盘'a'开头的jpg文件都改名
echo %~n0 a* jpg D:\

echo 如你要将当前目录及其下级所有目录中的所有jpg文件都改名
echo %~n0 * jpg .
echo ----------------------------------------------------------
echo 恢复:
echo 每运行一次后,我都会在你指定的最高路径下建立一个可以恢复改名的".bat"文件
echo 命名为"%savefile%.bat",当然如果目录已经有这样一个文件,我会覆盖它
echo 然后你只要双击运行"%savefile%.bat"(或直接在Dos窗口运行它)就可以把最近一次改
echo 名操作恢复;
echo ----------------------------------------------------------
pause
echo 最后,可能是dos本身的问题,当文件名中包含空格的时候,dos好象会出错,只取空格前的
echo 部分为文件名,哎,当初纯dos下可没有带空格的文件的呀!
goto :EOF
:rn
set /a num+=1
if exist %~p1%num%.%2 goto :rn
ren %1 %num%.%2
echo ren %~dp1%num%.%2 %~nx1 >>%savefile%.bat
第3个回答  2008-01-18
怎么这么多人都是瞎掰啊,都不是,批处理是很不容易批量重新命名的,明白吗》》》有的文件受保护的,就不行的
第4个回答  2008-01-16
高手啊!

如何用dos命令进行批量改名
可以使用 dos 中的 ren 命令批量更改文件名称,具体步骤如下:打开命令提示符并导航到文件目录。使用通配符(如 *)匹配要重命名的文件。使用 ren 语法更改文件名。也可以使用批处理文件自动化重命名过程。使用 DOS 命令进行批量重命名 方法:使用 ren 命令,语法为:ren 步骤:打开命令提示符:点击 ...

DOS 批量处理改名?
要求1、是一个.bat文档批量处理2、可以先结束进程如结束123.exe3、能够自动查找123.exe路径,并且可以重命名为123.……或者if多个路径选择查找如:C:\\ProgramFiles,D:\\edit可能有123... 要求1、是一个.bat文档批量处理2、可以先结束进程如结束123.exe3、能够自动查找123.exe路径,并且可以重命名为123.……或者if...

如何用dos命令批量修改文件夹名称
1.在任意一个盘中新建文件夹,将需要修改的文件全部置于该文件夹中;2.在开始程序中点击运行,在搜索框中输入cmd,进入DOS命令窗口;3.在dos模式输入命令行“pictures”然后回车,再输入命令行“rename",可将文件夹中的文件名在rename文件中列出;4.用xls打开文件夹中的rename,可以在B1列中输入数字1...

windos上批量改名操作
1、首先进入DOS界面,获取目前的所有文件名。按Win+R启动“运行”,输入cmd,回车,打开DOS窗口。2、将当前的工作路径调整到图片所在文件夹(D:\\mydoc)。输入D: 回车 输入 cd mydoc 回车 当前工作路径变为 D:\\mydoc 3、将d盘mydoc文件夹中所有的文件信息输出到文本文件name.txt。输入 dir...

如何批量重命名文件夹?
用dos批处理命令实现:步骤1、新建一个文本文档(txt格式)步骤2、打开输入以下内容 “dir\/b>1111.xls”注意不要引号,然后点选另存为,“文件名”栏改为“提取文件名.bat”注意要去掉txt后缀,文件类型改为所有,即可。步骤3、复制到任何需要生成目录的文件夹 步骤4、双击运行 注意:喜欢生成文本文件...

dos 批量重命名文件?
setlocal EnableDelayedExpansion for %%n in (*.jpg) do (set \/A a+=1 ren "%%n" "!a!.jpg")新建一个文本, 复制上面的信息到文本中, 保存-关闭, 然后修改文件的后缀名为 .bat 运行即可.注意: 这个bat文件必须跟所要改名的jpg文件在同一文件夹下.补充回答: 如果你确定两个文件夹内的文件...

如何DOS批量改名
echo off for \/f %%i in ('dir \/a-d \/b *.*') do (echo %%~ni | findstr "a1.1" &&(ren "%%i" abc.xls)echo %%~ni | findstr "a2.2" &&(ren "%%i" "xyz.xls"))

怎么给文件批量改名
1.全选上(也可以CTRL+A),然后点F2,然后改名就行了,比如你改的名字是“美眉”,后面的文件名会自动变成“美眉1”“美眉2”等。2.或者全选上,在最后一个文件上右键改名也可以。现在来说说怎么批量改文件后缀名吧:其实对DOS熟悉的朋友都知道“ren”这个可更改文件名的命令,基本格式为“ren [C...

如何在dos下批量修改文件名
ren *.jpg 文件名 回车 例如把所有的TXT文件改名为DOC类型,可以如下:ren *.txt *.doc 回车

dos下批量改扩展名问题
echo off for %%i in (*.php) do ren *.php *.php.txt exit 将以上代码复制到记事本,命名为rname.bat,即批处理文件,放到你的那个文件夹(D:\\ECD\\)下,双击运行

相似回答
大家正在搜