Я хотел бы создать сценарий PowerShell, который может импортировать файл CSV (details.csv) с двумя заголовками (FileName и FileCreationTime).В идеале сценарий должен искать файл details.csv в текущем местоположении, в котором он сохранен.
Он создает папки в текущем местоположении сценария с тем же именем, что и FileName, и тогда дата создания указанной папкибыть изменены, чтобы соответствовать FileCreationTime.
Пример куска моего CSV [сделанного в столбцах A & B Excel, затем сохраненного как CSV (с разделителями-запятыми) (*. Csv)]:
FileName FileCreationTime
Alpha 5/17/2017
Bravo 12/23/2013
Charlie 11/8/2015
Я искалрешение, но ничего, что я делаю, кажется не совсем правильным.В настоящее время у меня есть это:
Import-Csv -Path 'K:\Users\eschlitz\Thesis\details.csv' -Delimiter "," |
ForEach-Object {
$path = 'K:\Users\eschlitz\Thesis'
# Again, didn't want a definite path here, but I was trying different
# tweaks to see if I could get at least one instance to work correctly.
New-Item -Path $path -Name $$_.Filename -Type Directory
(Get-Item $_.Filename).CreationTime = (Get-Date $_.FileCreationTime)
}
Мое текущее сообщение об ошибке:
Get-Item: Не удается найти путь 'K: \ Users \ eschlitz \ Thesis \ Alpha', потому что это делаетне существует.
Меня не волнует, редактируется ли часть времени создания чч: мм: сс для новых папок, но было бы неплохо, если бы я мог стандартизировать их вседо 12:00:00
~~~~~~~~~~~~~~~~~~~~~~~ Редактирование вопроса Редактировать ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Рекомендуется изменить, чтобы показать, чем мой вопрос отличается от PowerShell: изменить метку времени (дата создания) папки или файла
Все, что я смог найти, относилось к этому, либо только A) создавал папки из CSV, либо был B) скрипт для редактирования даты создания одной папки / или пакетное редактирование даты создания нескольких папок, но только сединое новое время создания.Я надеялся, что сценарий потерпит неудачу, если он не сможет правильно найти новое время создания, уникальное для каждой новой папки, что избавит меня от необходимости вручную удалять неправильные папки или редактировать время создания вручную.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Редактировать ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Просто хотел опубликовать готовые рабочие версии на тот случай, если они понадобятся кому-нибудь в будущем.
#Adds folders to specified directory and modifies their creation date
Import-Csv -Path 'K:\Users\eschlitz\Thesis\details.csv' -Delimiter "," |
ForEach-Object {
$path = ' K:\Users\eschlitz\Thesis'
$dir = New-Item -Path $path -Name $_.Filename -Type Directory
$dir.CreationTime = [DateTime]::ParseExact($_.FileCreationTime,
'M\/d\/yyyy', [Globalization.CultureInfo]::InvariantCulture)
}
Инемного другая версия в зависимости от потребностей:
#Adds folders and then modifies their creation date where script+csv
#currently are
Set-Location -Path "$PSScriptRoot"
Import-Csv -Path ".\details.csv" -Delimiter ',' |
ForEach-Object {
New-Item -Path "$PSScriptRoot" -Name $_.FileName -Type Directory
(Get-Item $_.Filename).CreationTime =
([DateTime]::ParseExact($_.FileCreationTime, 'M\/d\/yyyy',
[Globalization.CultureInfo]::InvariantCulture))
}