Búsqueda de sitios web

Diversión del viernes: ¿Alguien sabe realmente qué hora es?


No existen cmdlets para estas cosas, por lo que tendrás que confiar en algunas técnicas de .NET, pero no te preocupes. No es necesario que deje de ser un profesional de TI. Los pasos son muy sencillos, aunque te parezca un poco extraño. Primero, veamos los días de la semana. Estos están muy bien almacenados en una clase .NET llamada DayOftheWeek, que es una enumeración. Esa es sólo una forma elegante de decir "lista". Así es como puede enumerar la "lista".

PS C:\> [enum]::GetValues([dayofweek])
Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday

Muy genial. No tengo un sistema que ejecute PowerShell en un idioma diferente, pero supongo que estos valores reflejarán su cultura. Hasta donde yo sé, esto debería funcionar en cualquier versión de PowerShell. ¿Qué puedes hacer con esto? Quizás necesites una carpeta para cada día de la semana.

[enum]::GetValues([dayofweek]) | foreach {
  mkdir "c:\work\$_"
}

Tomé cada valor y lo agregué a C:\Work para crear la carpeta diaria correspondiente. A continuación, descubramos cómo hacerlo con los nombres de los meses.

Desafortunadamente, no existe una clase Enum para los nombres de los meses. Pero la información es parte de una clase de globalización que corresponde a su cultura informática. Así es como funciona para mí.

PS C:\> [System.Globalization.DateTimeFormatInfo]::CurrentInfo.MonthNames

January
February
March
April
May
June
July
August
September
October
November
December

Nuevamente, los sistemas que no están en inglés deberían tener meses en su idioma. Hay un pequeño error con esto. Por alguna razón hay un misterioso mes número 13 sin nombre.


PS C:\> [System.Globalization.DateTimeFormatInfo]::CurrentInfo.MonthNames | measure

Count    : 13
Average  : 
Sum      : 
Maximum  : 
Minimum  : 
Property : 

Para solucionar esto, simplemente filtre por valores.

[System.Globalization.DateTimeFormatInfo]::CurrentInfo.MonthNames | where {$_} 

También podemos utilizar la misma técnica para crear un conjunto de carpetas mensuales.


[System.Globalization.DateTimeFormatInfo]::CurrentInfo.MonthNames |
where { $_ } | foreach -begin { mkdir C:\Work\2014 } -process {
  mkdir "c:\work\2014\$_"
}

Canalicé el nombre de cada mes en ForEach-Object. En el bloque de script de inicio creé una carpeta de año de nivel superior y en el proceso bloque de script una carpeta para cada mes. O quizás desee evitar valores codificados como 2014 o incluir el año en el nombre de la carpeta.


[System.Globalization.DateTimeFormatInfo]::CurrentInfo.MonthNames |
where { $_ } |
foreach -begin {$yr = (Get-Date).year} -process { mkdir "c:\work\$_`_$yr" }

Aquí obtengo el año actual en el bloque Inicio y luego lo agrego al nombre de la carpeta. Si ejecuto esto hoy terminaré con una carpeta como C:\Work\January_2013. Tenga en cuenta que debido a que usé un guión bajo, tuve que escapar de él.

Finalmente, si prefieres meses abreviados, también puedes hacerlo.

[System.Globalization.DateTimeFormatInfo]::CurrentInfo.AbbreviatedMonthNames | 
where { $_ } |
foreach -begin {$yr = (Get-Date).year} -process { mkdir "c:\work\$_`_$yr" }

Aquí también hay que filtrar el misterioso mes nulo.

Así que planifique con anticipación para el próximo año y espero que sea excelente para usted.

Artículos relacionados