有选择地删除文件和文件夹

时间:2017-12-22 14:48:42

标签: windows batch-file

我编写了一个批处理脚本,它通过读取输入文件并相应地删除这些文件夹内容但跳过其上的最后5个项目来获取值。

@echo off
setlocal enableDelayedExpansion

for /f "delims=" %%x in (sample.txt) do (
  set folder=%%x
  set del_folder=D:\myfolder\work\!folder!\reports
REM !del_folder!
    FOR /f "skip=5 delims=" %%a IN (' DIR !del_folder! /o-d /b') DO RD /S /Q "echo Deleting folder contents of !del_folder!\%%a"
 )

sample.txt看起来像(它包含文件夹名称)

alpha
bravo
charlie
tango
...
  1. 如何从循环中排除bravo和tango
  2. 对于剩余的文件夹,例如alpha和charlie,如何排除目标文件夹内的特定文件夹或文件
  3. 实施例,

    说文件夹{​​{1}}和'java'下的文件'report.yml'必须排除在删除之外

    {p>同样适用于D:\myfolder\work\alpha\reports

    任何建议都会非常有用。提前谢谢。

1 个答案:

答案 0 :(得分:1)

  1. 要排除Sample.txt文件中的某些文件夹,请更改以下行:

    for /f "delims=" %%x in (sample.txt) do (
    

    for /f "delims=" %%x in ('findstr /v /c:"folder 1" /c:"folder 2" "sample.txt"') do (
    
  2. 要排除!folder!\reports内的某些文件,请更改此行:

    FOR /f "skip=5 delims=" %%a IN (' DIR !del_folder! /o-d /b') DO RD /S /Q...
    

    for /f "skip=5 delims=" %%a in ('dir !del_folder! /o-d /b^|findstr /v /c:"string 1" /c "string 2"') do del /q /f "%~fa"
    
  3. 只需为您的目的修改folder 1folder 2string 1string 2。这是未经测试的,所以如果有问题请注释。