#Abrimos una aplicación excel $ExcelObject=New-Object -ComObject excel.application $ExcelObject.visible=$true #Cogemos los excels que queremos unir. $ExcelFiles=Get-ChildItem -Path C:\tmp\archivosexcel $Workbook=$ExcelObject.Workbooks.add() $Worksheet=$Workbook.Sheets.Item("Hoja1") foreach($ExcelFile in $ExcelFiles){ #Abrimos cada hoja de cada fichero y la copiamos en nuestro nuevo excel. $Everyexcel=$ExcelObject.Workbooks.Open($ExcelFile.FullName,0,$true) $Everysheet=$Everyexcel.sheets.item(1) $Everysheet.Copy($Worksheet) $Everyexcel.Close() } #Grabamos nuestro excel que contiene los demas. $Workbook.SaveAs("C:\tmp\archivosexcel\ExcelUnido.xlsx") $ExcelObject.Quit()
Snippet Category: powershell
$oldyear="2020" $newyear="2021" $baseDir = "c:\tmp\ejemplo\$newyear\" #Filtraremos por ficheros que empiecen por $NameToFind = "F.20." #buscamos en la carpeta del 2021 los ficheros que cumplan el criterio, aunque esten en subdirectorios!!! $filesMatching = Get-ChildItem $BaseDir -Recurse | Where-Object { $_.PSIsContainer -eq $false -and $_.Name.Contains($NameToFind) } $dirUnSorted=@() foreach($file in $filesMatching){ #Write-Host $file.Directory.Name $dirUnSorted+=$file.Directory.Name } #now we make unique the parent's directories $dirSorted= $dirUnSorted | Sort-Object | Get-Unique $(foreach($dir in $dirSorted){ #si no existe el directorio lo creamos If(!(test-path "c:\tmp\ejemplo\$oldyear\$dir\")) { New-Item -ItemType Directory -Force -Path "c:\tmp\ejemplo\$oldyear\$dir\" } #movemos los elementos que cumplan en criterio move-item -Path "c:\tmp\ejemplo\$newyear\$dir\F.20.*.pdf" -Destination "c:\tmp\ejemplo\$oldyear\$dir\" -PassThru })
gci -r | sort -descending -property length | select -first 10 name, @{Name="Gigabytes";Expression={[Math]::round($_.length / 1GB, 2)}}, fullname
gci -r | sort -descending -property length | select -first 10 name, @{Name="Gigabytes";Expression={[Math]::round($_.length / 1GB, 2)}}
gci -r | sort -descending -property length | select -first 10 name, length
$Daysold = 10 $Folder = "c:\windows\temp" #Borramos los ficheros que haya en la Variable Folder, que sean mas viejos que Daysold Get-ChildItem $Folder -Recurse -Force -ea 0 | ? {!$_.PsIsContainer -and $_.LastWriteTime -lt (Get-Date).AddDays(-$Daysold)} | ForEach-Object { $_ | del -Force $_.FullName | Out-File C:\tmp\deletedlog.txt -Append } #Eliniar directorios vacios Get-ChildItem $Folder -Recurse -Force -ea 0 | ? {$_.PsIsContainer -eq $True} | ? {$_.getfiles().count -eq 0} | ForEach-Object { $_ | del -Force $_.FullName | Out-File C:\tmp\deletedlog.txt -Append } #Los nombres de los ficheros eliminados los guardamos en C:\tmp\deletedlog.txt por si queremos tracearlo.