标题: [文本处理] [已解决]如何将多个bat文件合在一起,源码已添加帖子里。 [打印本页]
作者: duoduo200 时间: 2022-4-14 20:36 标题: [已解决]如何将多个bat文件合在一起,源码已添加帖子里。
本帖最后由 duoduo200 于 2022-4-20 09:21 编辑
各位大佬,我有5T无损音乐,杂七杂八需要整理归类。为了快速省力整理,在网上学到好几个bat批处理代码,都非常好用,但需要一个个放在当前文件夹里用太麻烦,所以想是否可以弄成一个,不知道大佬能否告知或者优化。
描述:
用everything搜索需要整理的文件夹 output,每一个都需要我整理
[img][/img]
打开其中一个就是如下图
[img][/img]
然后把这5个bat放在当前文件夹下
[img][/img]
依次点击第01bat开始到第05个,自动删除所有bat结束
[img][/img]
直到如下图,只有音乐文件为止。
[img][/img]
描述背景结束。
目前使用的bat源码,也是依次排序如下,从01-05个bat。
1、提取选中文件夹下的所有文件移动到上层目录:
@echo off
for /f "delims=" %%a in ('dir /a-d /b /s ') do (
move "%%~a" ./ 2>nul
)
2、删除当前文件夹下要删除的子文件夹名称
@echo off
cd /d "%~dp0"
for /f "delims=" %%i in ('dir /b /ad ^| findstr "子文件名称"') do (
rd /s /q "%%i"
)
3、删除指定名文件
@echo off
cd /d "%~dp0"
for /f "delims=" %%i in ('dir /b /s /a-d "CDImage.wav" "CDImage.cue"') do (
del /f /q "%%i"
)
4、删除当前空文件夹
@echo off
for /f "delims=" %%a in ('dir/s/ad/b^|sort /r') do (
echo,rd "%%a"&&rd "%%a"
)
pause
5、删除所有bat文件
for /f "delims=" %%A in ('where /f .:*.bat') do @del /f /q %%A
所有源文件代码结束。
想要的效果:
1、如上面描述背景中我所做的事情就是我想要的结果,请各位大佬给意见,但代码不要写指定文件夹,因为文件我要搬来搬去,无法长期固定在某个文件夹或者盘符下。
2、是否可以整合成一个test.bat,最好能优化一下,把test批处理放在output文件夹下,点击一下就自动运行从01-05bat。得到的结果就是我最后一个图。
延展效果:
整合后的test.bat能否直接放在我的鼠标右键菜单里,因为我现在就是这么弄的提取下层文件夹内文件,并设置了快捷建B。如下图。
[img][/img]
以上,请各位版主、管理大大帮助,非常感谢。
作者: went 时间: 2022-4-14 21:12
本帖最后由 went 于 2022-4-15 18:52 编辑
test.bat ,ansi编码
放到任意位置,双击添加或删除右键菜单- @echo off
- if not "%~1"=="" if not "%~1"=="REM" goto :handle
- REM 管理员权限
- %1 start "" mshta vbscript:createobject("shell.application").shellexecute("""%~0""","REM",,"runas",1)(window.close)&exit
- REM 文件夹右键菜单名称,快捷键,图标
- set "menu_name=一键操作"
- set "menu_hotkey=W"
- set "menu_ico="F:\Picture\Data\WIN32.ico""
- REM 没有则添加,有则删除
- reg delete "HKCR\Directory\shell\%menu_name%" /f 2>nul && (
- echo 删除右键菜单 %menu_name% 成功
- ) || (
- reg add "HKCR\Directory\shell\%menu_name%" /ve /d "%menu_name%(&%menu_hotkey%)"
- reg add "HKCR\Directory\shell\%menu_name%" /v "icon" /d "%menu_ico%"
- reg add "HKCR\Directory\shell\%menu_name%\command" /ve /d "\"%~0\" \"%%1\"" /f
- echo 添加右键菜单 %menu_name% 成功
- )
- pause&exit
- :handle
- if not exist "%~1\" echo ( 文件夹路径无效 & pause&exit )
- cd /d "%~dp1"
- REM 提取选中文件夹下的所有文件移动到上层目录
- for /f "delims=" %%a in ('dir /a-d /b /s ') do move "%%~a" . 2>nul
- REM 删除当前文件夹下要删除的子文件夹名称
- for /f "delims=" %%i in ('dir /b /ad ^| findstr "子文件名称"') do rd /s /q "%%i"
- REM 删除指定名文件
- for /f "delims=" %%i in ('dir /b /s /a-d "CDImage.wav" "CDImage.cue"') do del /f /q "%%i"
- REM 删除当前空文件夹
- for /f "delims=" %%a in ('dir/s/ad/b^|sort /r') do (echo,rd "%%a" & rd "%%a")
- pause&exit
复制代码
作者: duoduo200 时间: 2022-4-15 08:31
本帖最后由 duoduo200 于 2022-4-15 08:59 编辑
回复 2# went
感谢大佬!
但没用呢,也保存为na格式了,但只出现CMD界面,点击任意键开始,并没有开始运行任何BAT。然后就没然后了。是否因为这5个bat需要时间间隔,因为单独运行结果时候,都需要个时间跑完。
界面如下:
[img][/img]
作者: duoduo200 时间: 2022-4-15 09:02
回复 2# went
然后我用uf-8的原本格式保存代码,又试验了一下,还是不行,但出现了以下删除注册表的问题,如下图。
[img][/img]
作者: qixiaobin0715 时间: 2022-4-15 10:08
将下面代码放在要处理的文件的最上层目录中(比如“无损音乐”文件夹下),保存为ANSI编码,并注意备份好源文件:- @echo off
- for /f "delims=" %%i in ('dir /s /b /ad output') do (
- pushd "%%~dpi"
- for /f "delims=" %%j in ('dir /s /b /ad^|sort /r') do (
- move "%%j\*.*">nul 2>nul
- rd "%%j"
- )
- for /f "delims=" %%k in ('dir /b /a-d^|findstr /ve "wav"') do del "%%k"
- del CDImage.wav
- popd
- )
- pause
复制代码
未经测试。
作者: duoduo200 时间: 2022-4-15 10:47
回复 5# qixiaobin0715
感谢感谢!非常好用哈。可能我想要的比较多,您这个只实现部分删除功能哈。同样非常感谢。
作者: qixiaobin0715 时间: 2022-4-15 10:49
哪些没实现删除?
作者: duoduo200 时间: 2022-4-15 11:10
回复 7# qixiaobin0715
你好大佬。我是想把01-05bat的功能都整合一起实现哈。
作者: duoduo200 时间: 2022-4-15 11:14
回复 2# went
感谢大佬,是我没有理解代码,非常好用,感谢感谢!
作者: duoduo200 时间: 2022-4-15 16:29
回复 2# went
大佬,能不能在这个代码里,添加以下的路径和内容。这样有快捷方式和图标,便于快速选择哈。辛苦辛苦
[img][/img]
以下是在您的代码上,我又手动添加的,形成了最终效果。之所以想请您帮忙添加,是如果换了台电脑我还得重来一遍图标和快捷键添加。
[img][/img]
以上感谢Went
作者: went 时间: 2022-4-15 18:52
回复 10# duoduo200
2楼已更新,修改6-8行
作者: duoduo200 时间: 2022-4-15 19:14
回复 11# went
感谢大佬出手,非常感谢
作者: duoduo200 时间: 2022-4-21 08:54
回复 11# went
大佬,在实战中,出现CDImage 1.wav 等多个就无法删除了,能否变成只要有CDImage名字, 不管几个都可以删除。
[img][/img]
作者: went 时间: 2022-4-21 12:17
回复 13# duoduo200
27行改为- for /r %%i in ("*CDImage*") do del /f /q "%%i"
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |