vez varios renombrar renamer programa parte para nombre masivamente lote diferente con como carpetas cambiar archivos ala advanced msbuild

msbuild - varios - renombrar archivos masivamente cmd



Crear una lista de carpetas en un grupo de artículos usando MSBuild (5)

Estoy intentando crear un ItemGroup en un script de MSBuild que contiene una lista de carpetas directamente debajo de una carpeta ''Root'' dada. Entonces, en este ejemplo ...

+ Root folder ---- Sub Folder 1 -------- Sub-Sub Folder 1 -------- Sub-Sub Folder 2 ---- Sub Folder 2 ---- Sub Folder 3

... Me gustaría que mi ItemGroup contenga "Sub Folder 1", "Sub Folder 2" y "Sub Folder 3".

Puede haber una cantidad de archivos en cualquier punto de la jerarquía, pero solo me interesan las carpetas.

¿¡Alguien puede ayudar!?


El paquete de extensión MSBuild tiene una tarea llamada FindUnder , que devuelve un grupo de elementos de archivos o carpetas debajo de una determinada ruta. La siguiente tarea logrará lo que desea, devolviendo un grupo de elementos que contiene Subcarpeta 1, Subcarpeta 2 y Subcarpeta 3, pero no Subcarpeta 1 o Subcarpeta 2:

<MSBuild.ExtensionPack.FileSystem.FindUnder TaskAction="FindDirectories" Path="$(RootFolder)" Recursive="False"> <Output ItemName="FoundFolders" TaskParameter="FoundItems" /> </MSBuild.ExtensionPack.FileSystem.FindUnder>



MSBuild 4.0:

<PropertyGroup> <RootFolder>tmp</RootFolder> </PropertyGroup> <ItemGroup> <AllFiles Include="$(RootFolder)/**/*"/> <OnlyDirs Include="@(AllFiles->''%(RootDir)%(Directory)''->Distinct())"/> </ItemGroup>



<PropertyGroup> <RootFolder>tmp</RootFolder> </PropertyGroup> <ItemGroup> <AllFiles Include="$(RootFolder)/**/*"/> <OnlyDirs Include="@(AllFiles->''%(Directory)'')"/> </ItemGroup>

@ (OnlyDirs) puede contener duplicados, por lo que puede usar RemoveDuplicatesTask:

<Target Name="foo"> <RemoveDuplicates Inputs="@(OnlyDirs)"> <Output TaskParameter="Filtered" ItemName="UniqueDirs"/> </RemoveDuplicates> </Target>

o use CreateItem con lotes para% (AllFiles.Identity) o con msbuild 3.5:

<Target Name="foo"> <ItemGroup> <UniqueDirs Include="%(AllFiles.Directory)"/> </ItemGroup> </Target>