Powershell - добавление имени файла, поиск и замена, вывод в каталог - PullRequest
0 голосов
/ 02 июня 2018

У меня есть несколько автоматизированных задач, которые я бы хотел ежедневно помещать в каталог txt-файлов.Это включает в себя:

1. Добавить имя файла в первую строку текстового файла

2. Заменить содержимое с разделителями табуляции точкой с запятой (найти и заменить)

3. Сохраните файлы в подкаталоге

Следующий код работает для поиска и замены, но я не могу сохранить вывод в другой каталог, вместо этого он перезаписывает исходный файл.Есть ли другая команда, которая позволит мне сохранить вывод в другой каталог?

(Get-Content "C:\Input\*.txt") -replace "`t", ";" | Set-Content "C:\Input\*.txt"

В настоящее время у меня есть BAT, который выполняет элемент 1 (добавление имени файла), но если это может быть включено в скрипт Powershell, я думаю, что это был бы более чистый способ ведения дел.Любая помощь приветствуется!

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

Небольшая модификация ответа от Vivek, которая, кажется, работает.

Get-ChildItem "C:\Input\*.txt" | where {$_.Name -match ".txt"} | % {((Get-Content $_) -replace "`t", ";") | Set-Content "C:\Input\Upload\$($_.Name)"}
0 голосов
/ 02 июня 2018

Не проверено, но вы можете попробовать это -

Get-ChildItem "C:\Input\" | where {$_.Name -match ".txt"} | % {((Get-Content $_) -replace "`t", ";") | Set-Content "DifferentDirectoryPath\$($_.Name)"}

Если в вашей папке Input есть подпапки, которые вы хотите перебрать, то вы можете использовать это -

Get-ChildItem "C:\Input\" -Recurse -Include "*.txt" | % {((Get-Content $_) -replace "`t", ";") | Set-Content "DifferentDirectoryPath\$($_.Name)"}
...