簡體   English   中英

在Windows cmd Shell腳本方面需要您的幫助

[英]Need your assistance with Windows cmd shell script

我有以下腳本,該腳本從ROOT目錄中刪除所有子目錄,並刪除ROOT目錄中除* .bat文件之外的所有文件。

pause
FOR /R C:\Temp\ %%F IN (*.*) DO IF NOT "%%~xF" == ".bat" DEL /F /S "%%F"
for /d %%i in ("c:\Temp\*") do rmdir /s /q "%%i"
pause

幫助我改善腳本,使其還可以掃描ROOT子目錄中的* .bat文件,並刪除所有具有其他擴展名的文件。

測試。 如果控制台中顯示的是需要執行的操作,請從破壞性行中刪除echo命令,並保留rmdirdel命令。

@echo off

    setlocal enableextensions

    set "root=c:\temp"

    rem For the %root% tree
    for /r "%root%" %%d in (.) do (

        rem Test for the presence of .bat files under directory 
        dir /s /b "%%~fd\*.bat" 2>nul | find /v "" > nul 
        if errorlevel 1 (

            rem If there is no .bat files under directory, remove directory
            echo(**** rmdir /s /q "%%~fd"

        ) else (

            rem There are bat files in directory or under it. Remove anything else in this directory
            for %%f in ("%%~fd\*") do if not "%%~xf"==".bat" echo(-------- del "%%~ff"

        )

    )

編輯-適應注釋-如何適應代碼以便處理多個根文件夾? 獲取代碼並將其轉換為子例程,然后使用相應的根調用它。 遍歷根目錄列表

@echo off

    setlocal enableextensions

    for %%r in ("c:\temp" "c:\temp2" "c:\temp3") do call :processRoot %%r

    endlocal
    exit /b

:processRoot
    setlocal enableextensions disabledelayedexpansion

    set "root=%~1"

    rem For the %root% tree
    for /r "%root%" %%d in (.) do (

        rem Test for the presence of .bat files under directory 
        dir /a /s /b "%%~fd\*.bat" 2>nul | find /v "" > nul 
        if errorlevel 1 (

            rem If there is no .bat files under directory, remove directory
            echo(**** rmdir /s /q "%%~fd"

        ) else (

            rem There are bat files in directory or under it. Remove anything else in this directory
            for %%f in ("%%~fd\*") do if not "%%~xf"==".bat" echo(-------- del "%%~ff"

        )

    )
    endlocal
    goto :eof

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM