我有一个文件夹位置
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发布于 2018-12-13 03:07:45
关于如何获取执行脚本的目录,请参阅我的答案。How can I customize powershell when running inside of the VSCode integrated terminal?
要获取目录中的唯一(或第一个) txt文件,请执行以下操作:
$file = Get-ChildItem -Path 'Z:\MyFolder\Hours' -Filter *.txt | Select -First 1 | Select -ExpandProperty FullName这应该能让你振作起来。
发布于 2018-12-13 04:09:15
我用下面显示的解决方案解决了我的问题:
(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)文件,进行替换,然后保存该文件。
https://stackoverflow.com/questions/53749551
复制相似问题