如何使用批处理

时间:2015-11-04 07:51:19

标签: batch-file directory hidden subdirectory

糟糕的程序在每个子目录中留下了几个“.data”隐藏文件夹。

到目前为止,我已经尝试了这个,但是它不起作用......

RD /ah /s /q "D:\This Folder\.data"

我有很多文件夹和子文件夹,每个文件夹都有一个“.data”隐藏文件夹,我想删除它。如果有帮助,我想删除所有隐藏文件夹,因为它们都是“.data”。

3 个答案:

答案 0 :(得分:4)

@echo off
    setlocal enableextensions disabledelayedexpansion
    for /f "delims= eol=" %%a in ('
        dir /adh /s /b 2^>nul 
    ') do if /i "%%~nxa"==".data" echo rd /s /q "%%~fa"

这将执行dir命令以裸格式(/s)检索隐藏目录(/ahd)的递归(/b)列表。此列表由for /f命令处理,如果它是.data文件夹,将检查每个匹配项。如果它与条件匹配,则删除文件夹及其内容。

note rd命令仅回显给控制台。如果输出正确,请删除echo命令。

答案 1 :(得分:1)

@ECHO OFF
for /f "tokens=*" %%F in ('dir /s /b /o:n /adh') do (
    if "%%~nxF"==".data" rd /s /q "%%F"
)

dir /s /b /o:n /adh为您提供跳过文件的所有文件夹和子文件夹。 for /f遍历所有这些文件夹。 %%~nxF从整个路径中提取最后一个文件夹名称,以便我们检查它是否为.data。如果是这种情况rd /s /q %%F删除文件夹。

答案 2 :(得分:0)

读取键入/时的内容?然后:

使用/ d

FOR /D %variable IN (set) DO command [command-parameters]

    If set contains wildcards, then specifies to match against directory
    names instead of file names.

和/ r一起切换

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

Walks the directory tree rooted at [drive:]path, executing the FOR
statement in each directory of the tree.  If no directory
specification is specified after /R then the current directory is
assumed.  If set is just a single period (.) character then it
will just enumerate the directory tree.

以递归方式扫描文件夹

for /d /r . %%a in (data*) do rd /s /q "%%a"