|
|
发表于 2024-3-2 12:05:39
|
显示全部楼层
本帖最后由 aloha20200628 于 2024-3-2 13:03 编辑
若真是数据文件编码问题所致,则是“三点一线”的老生常谈,只要确保数据文件编码和批处理脚本编码与系统当前码页相同就可以了》例如 chcp 936对应简中编码的数据文件和简中编码的脚本文件;chcp 65001对应utf-8编码的数据文件和utf-8的脚本文件。
但若与目录结构有关,例如类似下面所示
D:\A
├─目录1
│ 1a.txt
│
└─目录2
2a.txt
则用6楼代码就没问题(假设数据文件是简中编码)
若目录结构类似下面所示
D:\A
│ a.txt
│ b.txt
│
├─目录1
│ │ 1a.txt
│ │
│ └─目录11
│ 11a.txt
│
└─目录2
│ 2a.txt
│
└─目录21
21a.txt
可改用如下代码尝试(本代码亦可用于第一种目录结构),如果每个子目录中的数据文件均被匹配成功即可删除该数据文件及其所在目录
- @echo off
- ::若数据文件和本脚本文件是简中编码则删除下一行
- chcp 65001>nul&cls
- ::设置目标根目录如下
- set "rootD=d:\a"
- for /f "delims=" %%F in ('dir /b/s/a-d "%rootD%\*.txt"^|sort /r') do (
- (find "张学友唱歌真好听。" "%%~F">nul) && (
- (del /q "%%~F") & if /i "%%~dpF" neq "%rootD%\" (rd /q "%%~dpF")
- ) 2>nul
- )
复制代码 |
|