2015-07-25 2 views
-2

У меня есть каталог, полный файлов .CSV. Я бы хотел, чтобы PowerShell импортировал каждый файл и сохранил их как отдельную переменную. В настоящее время я полагаюсь на цикл while и пользователь вручную вводит каждый файл CSV вручную.Массовый импорт CSV-файлов в PowerShell

Однако ручной ввод данных является довольно утомительным и трудоемким для пользователя, и я бы хотел, чтобы PowerShell автоматизировал эту задачу. Каким будет лучший способ сделать это? Я думал о том, что PowerShell генерирует список через «* .csv», сохраняя это для переменной, а затем перебирает указанный список для массового импорта. Будет ли лучший способ снять эту задачу? Заранее спасибо.

ответ

1

Я думаю, что может быть лучше, а не сохранять их как собственную переменную, было бы импортировать файлы в хэш-таблицу, где имя файла является ключом, а импортированные данные являются значением.

$CSVData = @{} 
Get-ChildItem '.\*.csv' | ForEach{$CSVData.Add($_.Name,(Import-CSV $_.FullName))} 

Затем, позволяет сказать, что один из файлов был «MarchSales.csv», что вы хотите получить доступ. Вы можете просто ссылаться на $CSVData['MarchSales.csv'] для работы с данными. Хотите работать с данными из каждого файла? Что-то вроде этого могло бы работать:

ForEach($filename in $CSVData.Keys){ 

    Do Stuff With $CSVData[$filename] 

} 
+0

Хмм, я никогда раньше не работал с Hashtables, я обязательно посмотрю на них и попробую то, что вы предлагаете. Прямо сейчас у меня есть сценарий, который смотрит на определенные заголовки в каждом файле CSV, чтобы автоматизировать отслеживание изменений с течением времени. Я подозреваю, что вы только что показали мне гораздо более эффективный способ сделать то, что я делал. Благодаря! – Omega