【问题标题】:how to delete files and folders如何删除文件和文件夹
【发布时间】:2016-01-16 08:14:03
【问题描述】:

如何仅删除以 2015 和 2014 开头的文件或文件夹?

这是我目前所拥有的,它会删除 C:\Temp 文件夹下的所有文件和文件夹

@TITLE = 
@ECHO ON

SET Folder="C:\Temp"

CD /D %folder%

FOR /F "Delims=" %%i IN ('DIR /B') DO (rmdir "%%i" /S/Q || DEL "%%i" /S/Q)

PAUSE

【问题讨论】:

  • del /f /s 2015* 后跟 del /f /s 2014* 也许? (在 C:/temp 中时)
  • dir 可以使用通配符:for ... ('dir /b 2014* 2015*') ... /s 也很有用。
  • @Stephan,-谢谢它的工作

标签: batch-file


【解决方案1】:

您可以使用for 循环遍历目录树; for /R /D递归枚举所有子目录,for /R返回文件:

pushd "C:\Temp"
for /R /D %%I in ("2014*" "2015*") do (
    rmdir /Q "%%~fI"
)
for /R %%I in ("2014*" "2015*") do (
    del /Q "%%~fI"
)
popd

或者让dir /B /S 返回所有项目、文件和目录,并使用for /F 循环解析其输出:

pushd "C:\Temp"
for /F "eol=| delims=" %%I in ('
    dir /B /S "2014*" "2015*"
') do (
    2> nul rmdir /Q "%%~fI" || del /Q "%%~fI"
)
popd

2>nul 重定向避免了rmdir 返回的错误消息,如果当前项目是一个文件。

【讨论】:

    【解决方案2】:
    @TITLE = 
    @ECHO ON
    SET Folder="C:\Temp"
    CD /D %folder%
    FOR /F %%I IN ('DIR /B') DO (
      SET FOLDER=%%I
      SET FOLDER=%FOLDER:~0,4%
      IF %FOLDER% == 2015 GOTO Delete
      IF %FOLDER% == 2014 GOTO Delete
      GOTO End
      :Delete
      RMDIR "%%I" /S /Q || DEL "%%I" /S /Q
      :End
    )
    PAUSE
    

    %FOLDER:~0,4% 表示你取变量'FOLDER'的前4个字符

    【讨论】:

    • gotofor 循环内的标签?这不会运行。
    猜你喜欢
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 2011-01-15
    • 1970-01-01
    相关资源
    最近更新 更多