使用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.war
和 sample2.war
但不是 ot1.xml
、ot2.xml
和 ot3.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种,不想再用手动的方法了。
符合上述要求的正确way/script是什么?
PS: I want to run this job every night using cron schedule in Jenkins. Due to audit purpose I can’t delete jobs, but I can delete the built artifacts to keep jenkins home directory light.
在命令行中使用:
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
。
我正在尝试删除存在于 Jenkins 主目录的嵌套子目录中的文件,但不删除嵌套子目录之外的任何文件。
这是目录结构。
└───Jenkins_Home
└───Jobs
├───Job1
│ │ ot1.xml
│ │
│ └───fileParams
│ sample1.war
│
├───Job2
│ ot2.xml
│
└───Job3
│ ot3.xml
│
└───fileParams
sample2.war
我要删除的文件是 sample1.war
和 sample2.war
但不是 ot1.xml
、ot2.xml
和 ot3.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种,不想再用手动的方法了。
符合上述要求的正确way/script是什么?
PS: I want to run this job every night using cron schedule in Jenkins. Due to audit purpose I can’t delete jobs, but I can delete the built artifacts to keep jenkins home directory light.
在命令行中使用:
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
。