标题: [文件操作] [已解决]批处理怎样删除含有特定连续字符的文件?还有另外两个问题 [打印本页]
作者: aceamuro 时间: 2021-2-3 18:52 标题: [已解决]批处理怎样删除含有特定连续字符的文件?还有另外两个问题
重点问题是第二个,谢谢!
问题1:
比如有三个文件- aabb.png
- aacc.png
- bbcc.png
复制代码
只删除带有aa字母的文件,保留bbcc.png;或者只删除带有bc字母的文件,保留aabb.png和aacc.png
问题2:
上面的问题1再进阶一步,假如决定删除的字母由另一个文件夹中的文件决定,这种情况要怎么写?
比如有两个文件夹和批处理文件- 文件夹1:aabb.png aacc.png bbcc.png
- 文件夹2:ab.png ac.png
- 批处理.bat
复制代码
运行批处理.bat,文件夹1里面会删除带有ab和ac字符的文件,也就是只保留bbcc.png,请问这个要怎么写?
问题3:跟上面两个问题无关
下面这个代码是根据文件夹2中的文件名,删除文件夹1中的同名文件,但我很菜,感觉好像写得比较繁琐,有没有更简单的写法?- setlocal enabledelayedexpansion
- cd /d .\2
- for %%a in (*.png) do (
- cd /d %~dp0
- del ".\1\%%a"
- )
复制代码
抱歉水平太菜问题有点多,重点问题是第二个,谢谢!
作者: went 时间: 2021-2-3 21:36
本帖最后由 went 于 2021-2-3 21:38 编辑
注意有中文的脚本要保存ansi编码
1.- @echo off & cd /d "%~dp0"
- for %%i in ("*aa*") do del %%i
- pause&exit
复制代码
2.- @echo off & cd /d "%~dp0"
- set "folder1=文件夹1"
- set "folder2=文件夹2"
- for %%i in ("%folder2%\*") do (
- for %%a in ("%folder1%\*%%~ni*") do (
- del "%%a"
- )
- )
- pause&exit
复制代码
3.- @echo off & cd /d "%~dp0"
- set "folder1=文件夹1"
- set "folder2=文件夹2"
- for %%i in ("%folder2%\*") do del "%folder1%\%%~nxi" 2>nul
- pause&exit
复制代码
作者: aceamuro 时间: 2021-2-3 22:03
回复 2# went
明白了,原来重点是用set,学到了,谢谢前辈
作者: went 时间: 2021-2-3 22:34
回复 3# aceamuro
你这里重点应该是for命令的通配符匹配
作者: qixiaobin0715 时间: 2021-2-4 05:56
本帖最后由 qixiaobin0715 于 2021-2-4 06:00 编辑
回复 2# went
根据你第3个代码的写法,前2个可简化:
1
del *aa*.png
2
for %%i in ("%folder2%\*.png") do del "%folder1%\*%%~ni*.png"
作者: aceamuro 时间: 2021-2-4 08:52
回复 4# went
是的,什么时候该用通配符我其实一头雾水
代码3的简化我原先是这么写的
for %%a in (.\2\*.png) do del ".\1\%%a"
然后运行cmd窗口显示删除的是
del .\1\.\2\文件名.png
这个目录不存在,自然是运行失败……
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |