У меня есть сценарий, в котором каждый день я получаю 2 файла csv, где имена файлов похожи на CMCS_ {Timestamp}, например CMCS_02012016100101 и CMCS_02012016100102. Эти 2 файла - это разные файлы и имеют разную структуру, но поскольку эти 2 файла будут входить в ту же папку, где мои инструменты ETL подберут ее и обработать. Поэтому я написал сценарий, в котором сценарий будет основываться на структуре файла, чтобы отличить его от файла A или файла B.Powershell копирует файлы в другое место на основе содержимого файла
Для файла A я скажу сценарию, чтобы посмотреть первую строку файла, и если line start with 'Name, Emp (Date). ', затем скопируйте файл в папку «А», если строка начинается с «Name, Group». 'затем скопируйте файл в папкуB else скопируйте файл в папку C
Здесь код, который я написал, powershell не вызывает никаких ошибок, но он также не дает никаких результатов. Интересно, что не так в моем сценарии.
$fileDirectory = "D:\Data";
$output_path = "D:\Output\FileA";
$output_path2 = "D:\Output\FileB";
$output_path2 = "D:\Output\FileC";
foreach($file in Get-ChildItem $fileDirectory)
{
# the full file path.
$filePath = $fileDirectory + "\" + $file;
$getdata = Get-Content -path $filePath
$searchresults = $getdata | Select -Index 1 | Where-Object { $_ -like 'Name,Emp(Date).*' }
$searchresults2 = $getdata | Select -Index 1 | Where-Object { $_ -like 'Name,Group.*' }
if ($searchresults -ne $null) {
Copy-Item $filePath $output_path
}
if ($searchresults2 -ne $null) {
Copy-Item $filePath $output_path2
}
}
Кроме того, оператор «, а затем скопируйте файл folderA и если линия начать с:
Я думаю, что это должен делать то, что вы после" Имени группы. затем скопируйте файл в папку B. Скопируйте файл в папку C ", похоже, не верен. Файлы будут скопированы только в «D: \ Output \ FileA» и «D: \ Output \ FileC». –
изменен на else, если вместо – user664481
Я уже исправил индекс до 0, но он все еще не работает. – user664481