System.IO.File Текущий каталог Использовать только TXT файл - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть расположение папки

Z:\MyFolder\Hours

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

    $r = @{
    "Mon" = "Monday";
    "Tue" = "Tuesday";
    "Wed" = "Wednesday";
    "Thu" = "Thursday";
    "Fri" = "Friday";
    "Sat" = "Saturday";
    "Sun" = "Sunday"
}


$regexes = $r.keys | foreach {[System.Text.RegularExpressions.Regex]::Escape($_)}
$regex = [regex]($regexes -join '|')

$callback = { $r[$args[0].Value] }

$file = [System.IO.File]::ReadAllText("Z:\MyFolder\Hours\file.txt")
$file = $regex.Replace($file, $callback)
Set-Content -Path Z:\MyFolder\Hours\file.txt -Value $file

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Я решил свою проблему с помощью решения, показанного ниже:

(Get-Content *.txt) | Foreach-Object {
    $_ -replace 'Mon\b', 'Monday' `
       -replace 'Tue\b', 'Tuesday' `
       -replace 'Wed\b', 'Wednesday' `
       -replace 'Thu\b', 'Thursday' `
       -replace 'Fri\b', 'Friday' `
       -replace 'Sat\b', 'Saturday' `
       -replace 'Sun\b', 'Sunday'
    } | Set-Content *.txt

Это позволяет скрипту PowerShell открываться в текущем каталоге, открывать единственный текстовый (txt) файл в этом каталоге, делатьзамены и сохраните файл.

0 голосов
/ 12 декабря 2018

Смотрите мой ответ о том, как получить каталог, из которого выполняется скрипт. Как я могу настроить powershell при работе внутри встроенного терминала VSCode?

Для получения единственного (или первого) txt-файла в каталоге сделайте что-то вроде:

$file = Get-ChildItem -Path 'Z:\MyFolder\Hours' -Filter *.txt | Select -First 1 | Select -ExpandProperty FullName

Это должно помочь тебе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...