#powershell
Вопрос:
У меня есть:
>cls
get-childitem -path '.k*' -Recurse –Directory | sort-object -property name -descending | format-table name, CreationTime, LastWriteTime
Я получаю:
KBBK 27/05/2021 09:31:43 27/05/2021 09:31:43
KBBKQ 27/05/2021 09:31:43 27/05/2021 09:31:43
KBK 27/05/2021 09:31:43 27/05/2021 09:31:43
KBKB 27/05/2021 09:31:43 27/05/2021 09:31:43
KBKN 27/05/2021 09:31:43 27/05/2021 09:31:43
KBKP 27/05/2021 09:31:43 27/05/2021 09:31:43
на данный момент: промежуток времени в США, чтобы получить день, час, минуту:
>$decimalHour=
$day=[Math]::Truncate($decimalday))
$hour=[Math]::Truncate($decimalHour)
$minute=($decimalHour - $hour) * 60
$minute=[Math]::Truncate($minute)
$date=[datetime]::Parse("$day`:$hour`:$minute`)
$date.Day
$date.Hour
$date.Minute
$date.ToLongTimeString()
Спасибо за вашу помощь
Арнольд
Комментарии:
1. Пожалуйста: папка фильтра также соответствует «выполнить»
2. Я не понимаю вопроса.. Почему так сложно? Поскольку
CreationTime
LastWriteTime
свойства и ужеDateTime
являются объектами, вы могли бы просто сделатьCreationTime.ToLongTimeString()
3. nks Тео: cls «kbbbkb», № 2 29.05.2021 — 15h50; fin 29.05.2021 — 22h23 «kbbbkn», № 3 29.05.2021 — 22h30; fin 30.05.2021 — 12h36 «kbbbkq», № 4 30.05.2021 — 12h37; fin 30.05.2021 — 19h21 «kbbbkr», № 5 30.05.2021 — 19h22; fin 31.05.2021 — 07h45 это математика (местоименная) ват-самое подходящее время для ду! (с именем папки. Строка соответствия: запуск (конец) Арнольд
Ответ №1:
Если я правильно понимаю, вам нужен столбец TimeDiff, в котором отображается разница между временем записи и временем создания объекта.
В таком случае вы можете сделать это:
$result = Get-ChildItem -Path '.k*' -Recurse –Directory |
Sort-Object -Property Name -Descending |
ForEach-Object {
# get a TimeSpan object by subtracting the two dates from the DirectoryInfo object
$diff = $_.LastWriteTime - $_.CreationTime
[PsCustomObject]@{
Name = $_.Name
CreationTime = $_.CreationTime
LastWriteTime = $_.LastWriteTime
# format the time difference anyway you like
# here, as demo create something like '2d11h37m' (2 days, 11 hours, 37 minutes)
TimeDiff = '{0}d{1}h{2}m' -f $diff.Days, $diff.Hours, $diff.Minutes
# or something like '2.11:37' (2 days, 11 hours, 37 minutes)
# TimeDiff = '{0}.{1:D2}:{2:D2}' -f $diff.Days, $diff.Hours, $diff.Minutes
}
}
# display on screen
$result | Format-Table -AutoSize
# write to CSV file if you like
$result | Export-Csv -Path 'PathToTheOutput.csv' -NoTypeInformation
Комментарии:
1. Привет, Тео Мэнни, спасибо за твой ответ «Да»! KRKQ 27/05/2021 09:33:09 27/05/2021 09:33:09 0d0h0m KRKQ 24/05/2021 00:39:41 27/05/2021 17:57:22 3d17h17m KRKPP 28/05/2021 19:13:06 28/05/2021 19:31:37 0d0h18m KRKP 24/05/2021 00:39:41 27/05/2021 17:57:22 3d17h17m просто я забыл: 1. Папки (Ист ОК) второе условие: 2. Если папка находится в конце, пожалуйста,- сопоставьте строку «run» внутри папки , Мэнни, спасибо, сэр! Арнольд
2. @Arenas Рад, что это работает для вас. Однако, что вы подразумеваете под «Если папка находится в конце» и что такое «-соответствует строке «запуск» внутри папки» ? Вы имеете в виду последнюю папку всей итерации? Есть ли «выполнить» в ИМЕНИ этой папки? Что-то вроде
Get-ChildItem -Path '.k*'run*
«возможно»?3. Здравствуйте, сэр, если проблема решена = слово «выполнить» находится внутри папки. (donne). Мне так жаль, сэр! Арнольд
4. Сэр: владелец папки «запустил» внутри и: Информация от владельца папки. (KBBBKN) Откройте с помощью «jEdit» Редактирование текста для сценария bname KBBBKN passdone 902 maxbcwply 39 maxbczply 156 cstotal 4859339 maxsolw 155 maxsolz 156 wmopen 1282453830 wnopen 8269881744 zmopen 1192607874 znopen 7641322920