我已经看到如何删除名称中没有特定字符串的所有文件
但是,我想删除文件名或路径中没有特定字符串的文件(不仅是文件名),并且我希望该字符串是字符 ®。
根据此修订历史,以下内容适用于字符串“MS”,但不适用于特殊字符:
@echo off
setlocal disableDelayedExpansion
for /f "usebackq tokens=*" %%i in (`dir /a:-d /b /s *.zip ^| findstr /v MS` ) do (
echo del /s /q %%i
)
endlocal
对于不支持该
-File
参数的旧版本 PowerShell,请使用:Obs.:要添加®您的代码,请尝试...
也许这可以帮助?
事实上,特殊的控制台字符,它激活页面并对其进行编码,用于写入/读取文件名,并将该信息移动到变量,在字母汤中读取和比较它,在 cmd/bat 中有点难以处理,这就是为什么我寻求语言帮助的原因......
因此,对于一个偏执的提议,考虑到删除文件的操作,我使用 C# 尝试使用 base64 对字符串进行比较(通配符 alt 169 = ®)。
这些操作的结果是一个脚本 cmd/bat,它在运行时将一个 C# 源代码编译成一个可执行文件,脚本将使用它从文件名中获取字符串,是否存在字符名(在 base64 中)在名字里。
这是我的朋友,还是和上面曝光的完全不同的东西,而且,我的英语有限,无法向你解释清楚:)
Batch 与 unicode 不兼容,因此它会将 ® 识别为 ©,所以我只是在批处理文件中将 ® 更改为 ©,但我想使用 chcp 更改代码页也可以。您要删除名称中没有 ® 的所有文件还是只删除 zip 文件?好吧,如果是所有文件,只需将 for 中的 *.zip 更改为 *: