Get-Content
, вероятно, лучший подход, чем Import-Csv
, потому что будет позволять вам проверьте всю строку для пробелов вместо проверки каждого отдельного поля. Для полностью автоматизированной обработки вы бы просто использовать Where-Object
фильтр для удаления не совпадающие строки с выхода:
Get-Content 'C:\CrPowershell\test\input.csv' |
Where-Object { $_ -notlike '* *' } |
Set-Content 'C:\CrPowershell\test\output.csv'
Однако, так как вы хотите, чтобы запрашивать для каждой отдельной строки, которая содержит пробелы вам нужно ForEach-Object
(или похожую конструкцию) и вложенный условный, как это:
Get-Content 'C:\CrPowershell\test\input.csv' | ForEach-Object {
if ($_ -notlike '* *') { $_ }
} | Set-Content 'C:\CrPowershell\test\output.csv'
Самый простой способ, чтобы побудить пользователя для ввода является Read-Host
:
$answer = Read-Host -Prompt 'Message'
if ($answer -eq 'y') {
# do one thing
} else {
# do another
}
В вашем конкретном случае, вы, вероятно, сделать что-то подобное для любого согласования линии:
$anwser = Read-Host "$_`nKeep the line? [y/n] "
if ($answer -ne 'n') { $_ }
Вышеуказанные проверки, если ответ неn
, чтобы сделать удаление линии сознательного решения.
Другие способы для запроса ввода пользователя являются choice.exe
(который имеет дополнительное преимущество, что позволяет тайм-аут и ответ по умолчанию):
choice.exe /c YN /d N /t 10 /m "$_`nKeep the line"
if ($LastExitCode -ne 2) { $_ }
или host UI:
$title = $_
$message = 'Keep the line?'
$yes = New-Object Management.Automation.Host.ChoiceDescription '&Yes'
$no = New-Object Management.Automation.Host.ChoiceDescription '&No'
$options = [Management.Automation.Host.ChoiceDescription[]]($yes, $no)
$answer = $Host.UI.PromptForChoice($title, $message, $options, 1)
if ($answer -ne 1) { $_ }
Я оставляя это как упражнение для вас, чтобы интегрировать любую подсказку, которую вы выбрали, с остальной частью кода.
В чем ваш вопрос? Как запросить ввод пользователя? Как заменить пустые символы? Или как обрабатывать файл по строкам? Это три разных вопроса, и вы не должны их смешивать. –
Как заменить пустые символы при переходе по строкам и ожидании ввода пользователем для каждой строки.Извините, если я смешиваю их, но даже если я задаю 3 разных вопроса, которые бы не позволили мне решить проблему. Мне понадобится все 3 в одном – CM2K
@ CM2K вы хотите удалить всю строку или просто заменить пустой символ – Paul