【问题标题】:batch file to delete folder with special name批处理文件以删除具有特殊名称的文件夹
【发布时间】:2013-03-12 00:42:43
【问题描述】:

我想删除所有只有数字名称的文件夹。 所以我用正则表达式写了一个批处理文件:

@echo off

D:
cd D:\Install\Work

for /d %%i in (*|findstr "^[0-9]*$") do (
      rd /s /q %%i
)

echo [all the folders under work are deleted!]

pause

但它不起作用。哪里出错了?

【问题讨论】:

    标签: regex batch-file cmd


    【解决方案1】:
    @ECHO OFF
    SETLOCAL
    FOR /f %%x IN (
     'dir /ad /b * ^|FINDSTR "^[0-9]*$" '
     ) DO ECHO %%x
    

    FOR /F 从文件/命令输出读取行到元变量。

    for /d 只是将目录名应用于元变量。

    【讨论】:

      【解决方案2】:

      试试这个:

      @echo off
      
      for /r D:\Install\Work %%d in (.) do (
        echo %%~nxd|findstr "^[0-9]*$" >nul && rd /s /q "%%~fd"
      )
      

      请注意,这将删除所有数字文件夹,即使它们包含其他名称不是仅由数字组成的文件夹!

      • %%~nxd:从 %%d (~) 中删除封闭的双引号并仅扩展名称 (n) 和扩展名 (x)
      • >nul:抑制 STDOUT 上的输出
      • %%~fd:从 %%d (~) 中删除封闭的双引号并展开完整路径 (f)

      【讨论】:

      • 什么意思 "%%~nxd" ">nul" "%%~fd" ?
      猜你喜欢
      • 1970-01-01
      • 2014-10-22
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      相关资源
      最近更新 更多