Obtener los archivos cuya fecha en el nombre del archivo es mayor que en el caso específico de la fecha utilizando un script de Powershell

0

Pregunta

Tengo una fecha específica "2021/11/28", quiero la lista de archivos de ejemplo los nombres de archivo(abajo) cuyo nombre de archivo es mayor que 2021/11/28. recuerde que no es el momento de la creación de los nombres de archivo.

 "test_20211122_aba.*"
 "abc_20211129_efg.*"
 "hij_20211112_lmn.*" 
 "opq_20211130_rst.*"

Estoy esperando a conseguir

 "abc_20211129_efg.*"
 "opq_20211130_rst.*"

Realmente aprecio su ayuda.

powershell powershell-4.0
2021-11-23 18:40:47
1

Mejor respuesta

1

Usted no estrictamente necesario analizar sus cadenas en las fechas ([datetime] instancias): Debido a que la fecha de cadenas incrustado en los nombres de archivo en un formato donde su léxico clasificación es equivalente a cronológica de clasificación, usted puede comparar las representaciones de cadena directamente:

# Simulate output from a Get-ChildItem call.
$files = [System.IO.FileInfo[]] (
  "test_20211122_aba1.txt",
  "abc_20211129_efg2.txt",
  "hij_20211112_lmn3.txt",
  "hij_20211112_lmn4.txt",
  "opq_20211130_rst5.txt"
)

# Filter the array of files.
$resultFiles = 
  $files | Where-Object {
    $_.Name -match '(?:^|.*\D)(\d{8})(?:\D.*|$)' -and
      $Matches[1] -gt ('2021/11/28"' -replace '/')
   }

# Print the names of the filtered files.
$resultFiles.Name
  • $_.Name -match '(?:^|.*\D)(\d{8})(?:\D.*|$)' busca (el último) de ejecución de exactamente 8 dígitos en cada nombre de archivo a través de una captura de grupo ((...)), que se refleja en el automático $Matches la variable de entrada con el índice de 1 ($Matches[1]) después, si se encuentra.

  • '2021/11/28"' -replace '/' elimina todos los / los caracteres de la cadena de entrada, para hacer que el formato de la fecha cadenas de la misma. Para mayor brevedad, la solución anterior lleva a cabo esta sustitución en cada ciclo de operación. En la práctica, se podría realizar de una vez, antes de que el bucle, y asignar el resultado a una variable para su uso dentro del bucle.

2021-11-23 20:35:51

seguro, voy pronto. De alguna manera no podía ver a mi comentario anterior. Comentando de nuevo " ¡Impresionante! El código trabajó como un encanto. Un millón de gracias"
Razz

Podría pls ayuda. Estoy trabajando en otro script que requiere comparar el mismo con la fecha de hoy. Algo como esto..pero me estoy poniendo problema de formato. Where-Object {$_.Name -match '(?:^|.*\D)(\d{8})(?:\D.*|$)' -and $Matches[1] -eq (Get-Date).Date}
Razz

@Razz, reemplazar (Get-Date).Date con (Get-Date).ToString('yyyyMMdd'). Si necesita más ayuda, por favor cree una nueva pregunta del post.
mklement0

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................