簡體   English   中英

使用bat腳本僅刪除子文件夾中的文件

[英]Deleting files only in sub-folders using bat script

我正在嘗試刪除 Jenkins 主目錄的嵌套子目錄中存在的文件,但不刪除嵌套子目錄之外的任何文件。

這是目錄結構。

└───Jenkins_Home
    └───Jobs
        ├───Job1
        │   │   ot1.xml
        │   │
        │   └───fileParams
        │           sample1.war
        │
        ├───Job2
        │       ot2.xml
        │
        └───Job3
            │   ot3.xml
            │
            └───fileParams
                    sample2.war

我要刪除的文件是sample1.warsample2.war但不是ot1.xmlot2.xmlot3.xml

我嘗試了以下方法,但這些方法正在刪除每個 *.txt 文件。

方法一:

cd C:\Users\Kris\Desktop\MINE\Jenkins_home\jobs\**\fileParams
del /s /q *.war

方法二:

cd C:\Users\Kris\Desktop\MINE\Jenkins_home\jobs\**\**
del /s /q *.war

方法三:

cd C:\Users\Kris\Desktop\MINE\Jenkins_home\jobs\**
del /s /q *.war

這樣的目錄結構有將近100個,我不想求助於手動方法。

符合上述要求的正確方法/腳本是什么?

PS:我想每天晚上在 Jenkins 中使用 cron 計划運行這項工作。 由於審計目的,我無法刪除作業,但我可以刪除構建的工件以保持 jenkins 主目錄的亮度。

在 cmd 行中使用:

for /R "C:\Users\Kris\Desktop\MINE\Jenkins_home\jobs" %A in (fileParams) do @if exist "%A\*.war" @echo Del %A\*.war

在批處理文件中

@Echo off
for /R "C:\Users\Kris\Desktop\MINE\Jenkins_home\jobs" %%A in (fileParams
    ) do if exist "%%A\*.war" echo Del %%A\*.war

樣本輸出:

Del C:\Users\Kris\Desktop\MINE\Jenkins_home\jobs\Job1\fileParams\*.war
Del C:\Users\Kris\Desktop\MINE\Jenkins_home\jobs\Job3\fileParams\*.war

如果輸出看起來不錯,請刪除echo

看到您打算從中刪除它們的目錄中只有.war文件,您只需運行for /R循環即可從包含相關目錄的最高文件夾jobs遞歸:

@echo off
for /R "C:\Users\Kris\Desktop\MINE\Jenkins_home\jobs\" %%i in (*.war) do echo del /Q "%%~fi"

一旦您確信屏幕上有您需要的輸出,只需刪除echo

暫無
暫無

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

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