user3632330
user3632330

Reputation: 58

nant delete subfolders exclude files

need help regarding delete task in nant or command which can be used in nant build file.

here is the requirement, i have multiple files and folders in a root folder. i need to delete only folders but not files..

Any idea how to do this.

Blockquote

EX : ROOT
          -a.txt
          -b.txt
          -Folder1
          -Folder2

after deletion, it should be

Blockquote

EX: ROOT-
        -a.txt
        -b.txt

Thanks in advance.

Upvotes: 0

Views: 343

Answers (2)

user3632330
user3632330

Reputation: 58

used the above suggustions and found it out :

Code :

<echo file="CleanFolders.bat">for /d %%a in ("${dir}\subdir\*") do rmdir /s /q "%%~fa</echo>
    <exec program="CleanFolders.bat"/>

Upvotes: 0

MC ND
MC ND

Reputation: 70941

    for /d %%a in ("c:\some\root\*") do echo rmdir /s /q "%%~fa"

For each folder inside the indicated path, matching the indicated mask, remove the folder

Delete operations are echoed to console. If the output is correct, remove the echo command to execute the rmdir commands.

To include it in a build file, and avoid problems with quoting, it is better to create a batch file to contain the command and call this batch file. That way, the batch file will be something like

@echo off
    if "%~1"=="" exit /b 1
    for /d %%a in ("%~1\*") do echo rmdir /s /q "%%~fa"

With the path to the folder to clean passed as argument

Then, the exec task will be something like

<exec program="cmd.exe" commandline="/c theBatchFile.cmd" workingdir="${project.batchFiles}" output="e:\my.txt">
      <arg value="${project.rootFolder}" />
</exec>

The variables will need to be defined pointing to

${project.batchFiles} = where the batch file is located ${project.rootFolder} = the folder that needs to be cleaned

So, the task will call cmd.exe to process the batch file, passing the folder as argument to the batch.

Upvotes: 1

Related Questions