Резюме: Microsoft Scripting Guy, Ed Wilson показывает как создать набор папок на основе дат, используя Windows PowerShell.
Создание папок для организации фотографий
Тереза настоятельно просила создать на нашем «неубиваемом» внешнем накопителе стандарта USB 3 набор папок. Каждый каталог должен отражать дату в своем названии. Я люблю фотографироваться, но я терпеть не могу заниматься организацией фотографий.
Определяем, сколько нам понадобится папок
Первое, что мне нужно сделать – это определить, сколько именно папок мне нужно создать. Я, конечно, могу просто посчитать, но это же прошлый век. Вместо этого я использую командлет New-TimeSpan, так как я знаю когда я уезжаю – сегодня – и когда возвращаюсь.
PS C:\> New-TimeSpan -Start (get-date) -End 12/3/12
Days : 19
Hours : 11
Minutes : 24
Seconds : 59
Milliseconds : 191
Ticks : 16826991917033
TotalDays : 19.4756850891586
TotalHours : 467.416442139806
TotalMinutes : 28044.9865283883
TotalSeconds : 1682699.1917033
TotalMilliseconds : 1682699191.7033
Теперь получаем имена каталогов из дат – это просто
Все что мне нужно сделать – это создать 19 каталогов на основе дат. Это будет включать в себя несколько повторений, поэтому я воспользуюсь командлетом Foreach-Object. Я буду получать даты при помощи метода adddays и конвертировать их в строку при помощи метода tostring. Кроме того, я могу указать необходимый мне тип строки. Ниже приведен код для получения имен папок (самим их созданием мы займемся чуть позже). Мне не нужен каталог для сегодняшней даты, поэтому я начинаю с 1. Кроме того, мы прилетаем домой 3 декабря, но из Праги мы будем возвращаться поездом, поэтому для 3 декабря тоже нужно создать папку. Таким образом мне нужно продлить цикл до 20.
PS C:\> 1..20 | % {(get-date).adddays($_).tostring(«MMddyyyy»)}
11142012
11152012
11162012
11172012
11182012
11192012
11202012
11212012
11222012
11232012
11242012
11252012
11262012
11272012
11282012
11292012
11302012
12012012
12022012
12032012
Создаем папки из дат
Теперь мне нудно создать папки на моем внешнем накопителе. Это диск F. Вместо того, чтобы просто создать папки, я воспользуюсь командлетом New-Item. В качестве типа мы укажем «directory». Поскольку я перейду на диск F, мне не нужно беспокоиться об указании полного пути. Я введу PushD для сохранения моего текущего местоположения и перейду на диск F командлетом Set-Location. После этого я создам каталоги, и, наконец, вернусь в мой рабочий каталог командой PopD.
pushd
sl f:
1..20 | % {New-Item -Name (get-date).adddays($_).tostring(«MMddyyyy») -ItemType directory}
Popd
Вот и все.
Автор:
Ed Wilson, Microsoft Scripting Guy
Оригинал:
Страницы в социальных сетях:
Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell