如何解决如何使用批处理文件删除子文件夹下的长名称文件夹
我正在尝试使用批处理文件删除子文件夹。 我有文件夹
- c:\users\mis
- c:\users\mis\A\第三方日志
- c:\users\mis\B\第三方日志
- c:\users\mis\C\第三方
- c:\users\mis\D\第三方
等等。 我想删除所有“第三方日志”文件夹,我厌倦了如下:
@echo off
Set MainFolder=C:\users\mis
FOR /D %%D IN ("%MainFolder%\*") DO CALL :RENAME %%D
pause & exit
REM -------------------------------------------------------
:RENAME
Set CRITERIA=Third Party Log
FOR /D %%R IN ("%1\%CRITERIA%") do @if exist "%%R" rd /s /q "%%R"
REM -------------------------------------------------------**
如果文件夹只是第三个,则正在删除。请帮我删除文件。
谢谢, 网址
解决方法
@ECHO OFF
SETLOCAL
rem The following settings for the source directory,destination directory,target directory,rem batch directory,filenames,output filename and temporary filename [if shown] are names
rem that I use for testing and deliberately include names which include spaces to make sure
rem that the process works using such names. These will need to be changed to suit your situation.
SET "targetdir=u:\your files"
SET "selectname=Third Party Log"
FOR /f "delims=" %%a IN (
'dir /b /s /ad "%targetdir%\%selectname%" '
) DO (
IF /i "%%~nxa"=="%selectname%" ECHO RD /S /Q "%%a"
)
只需执行 dir /b /ad
即可列出与掩码 %selectname%
匹配的所有目录名并删除所有匹配项。
请注意,for
循环可以压缩为一行,但为了清楚起见,我将其拆分为一个数字。
当然,如果需要,变量也可以用它们的文字值替换。这会将整个批次缩减为一行,可以直接在提示符处输入,在这种情况下,每个 %%
需要缩减为单个 %
。
发布的代码只是echo
是提议的说明以允许验证。如果显示的说明是正确的,请删除 echo
关键字以实际销毁不需要的目录。
最后,在您的原始代码中,rename
不是子例程的好名称,原因有两个:首先,它具有误导性,因为未执行重命名;其次,ren
是rename
- 拥有一个本身就是命令名的例程、变量或标签并不是一个好主意。
遗憾的是,我不能编写代码并对其进行测试,但是:
您可以在临时文件中使用 dir 命令。 使用 findstr(或 find i m not shure)并查找第三方日志。 将此写回临时文件。 现在你应该留下一个文件,里面装满了你想要删除的文件夹的路径。 逐行读取文件并删除,并使用此行字符串提供 del 命令的路径。
要更改示例代码中的名称,您可以使用行字符串并将其用作 ren 命令的路径。
这很可能是一种非常糟糕的方法,但它应该有效。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。