做一个bat批处理,修改文件夹名称,在关键词前加"-"

"D:\待处理\" 目录下有多个文件夹,"D:\文本A.txt"里有多个关键词(一行一个),文件夹名称包含N个关键词(N≥1)。 检测文件夹名称包含"D:\文本A.txt"里面的哪些关键词,并在文件夹名称里包含的关键词前加上"-"

比如 ”小王幸福约定浪漫之约“这个文件夹包含2个关键词”幸福约定“和”浪漫之约“,就将文件夹重命名为”小王-幸福约定-浪漫之约“,不要管里面的子文件夹。我需要把批处理放在其它地方,不要与要处理的文件夹放在一起,"D:\待处理\" 目录下所有多个文件夹进行处理(不包括子文件夹)。

@echo off
setlocal enabledelayedexpansion
set "folder=D:\待处理"
::格式化文件夹名
for /f "delims=" %%a in ('type "D:\文本A.txt"') do (
for /f "delims=" %%b in ('dir /ad /b "!folder!\" ^|find "%%a"') do (
set "tmpname=%%b"
set "tmpname=!tmpname:%%a=-%%a-!"
set "tmpname=!tmpname:--=-!"
set "tmpname=!tmpname:---=-!"
set "tmpname=!tmpname:----=-!"
set "tmpname=!tmpname:-----=-!"
set "tmpname=!tmpname:------=-!"
if "!tmpname:~,1!" == "-" (set "tmpname=!tmpname:~1!")
if "!tmpname:~-1!" == "-" (set "tmpname=!tmpname:~,-1!")
ren "%%b" "!tmpname!"
)
)
::建立子文件夹
for /f "delims=" %%a in ('dir /ad /b "!folder!\"') do (
cd /d "!folder!\%%a\"
set name="%%a"
set name=!name:-=","!
set n=1
echo !name!
for %%b in (!name!) do (
set t=%%b
find %%b "D:\文本A.txt" && md "!n!!t:~1,-1!\" && set /a n+=1
)
)
::移动图片
for /f "delims=" %%a in ('dir /ad /b "!folder!\"') do (
echo "!folder!\%%a\"
cd /d "!folder!\%%a\"
set /a m=s=0
for /f "delims=" %%b in ('dir /ad /b') do set /a m+=1
for %%c in (*.jpg) do set /a s+=1
set /a r=s/m,z=0
for %%b in (*.jpg) do (
for /f "delims=" %%i in ('dir /ad /b "!m!*"') do set files=%%i
move "%%b" "!files!\" 2>nul
set /a z+=1
if !z! == !r! set z=0 & set /a m-=1
)
)
pause

追问

上图为原文件夹,下图为处理后的文件夹,照片被移到”D:\“下了,文件夹名称也没有改变哦

追答16行ren "%%b" "!tmpname!"更改为ren "!folder!\%%b" "!tmpname!"

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-07
能修改所文件夹文件 及所文件夹文件
譬文件夹 AB俩文件夹
文件夹都 .copy结尾类型文件些文件都修改.swf缀文件
木高手懂批处理
我要同 启
abc.exe
bbc.exe
ccb.exe
.
,我想批处理文件,
启完 abc.exe 等待60秒
继续启文件.
知道bat 语句设置 等待间.