我有一个 txt 文件,每行只有数字,
1234
2345
3456
4567
我想将这一行放入 powershell 中的值中,但超过 1000 次。
$id = "1234"
$w = Get-SPWeb $urlWeb
$l = $w.Lists[$listName]
$i = $l.GetItemById($id)
$id = "2345"
$w = Get-SPWeb $urlWeb
$l = $w.Lists[$listName]
$i = $l.GetItemById($id)
$id = "3456"
$w = Get-SPWeb $urlWeb
$l = $w.Lists[$listName]
$i = $l.GetItemById($id)
有人能告诉我如何使用 Notepad++ 或其他工具来实现这一点吗?谢谢,
答案1
如果我理解正确的话,您需要循环遍历源文件中的每个数字并执行相同的操作。使用 cmdlet ForEach-Object
。
gc "C:\foo.txt" | % {
$id = $_
$w = Get-SPWeb $urlWeb
$l = $w.Lists[$listName]
$i = $l.GetItemById($id)
}
或者,您可以在 Notepad++ 中录制宏来格式化您的文件。
答案2
- Ctrl+H
- 找什么:
\d+
- 用。。。来代替:
$id = "$0"\n$w = Get-SPWeb $urlWeb\n$l = $w.Lists[$listName]\n$i = $l.GetItemById\($id\)\n
- 检查环绕
- 检查正则表达式
- Replace all
解释:
\d+ : 1 or more digits
替代品:
$0 means whole match, ie. the number
$id = "$0" : first line
\n : line break, you could use \r\n
$w = Get-SPWeb $urlWeb : second line
\n : line break, you could use \r\n
$l = $w.Lists[$listName] : third line
\n : line break, you could use \r\n
$i = $l.GetItemById\($id\) : fourth line, parenthesis have to be escaped in Npp
\n : line break, you could use \r\n
给定示例的结果:
$id = "1234"
$w = Get-SPWeb $urlWeb
$l = $w.Lists[$listName]
$i = $l.GetItemById($id)
$id = "2345"
$w = Get-SPWeb $urlWeb
$l = $w.Lists[$listName]
$i = $l.GetItemById($id)
$id = "3456"
$w = Get-SPWeb $urlWeb
$l = $w.Lists[$listName]
$i = $l.GetItemById($id)
$id = "4567"
$w = Get-SPWeb $urlWeb
$l = $w.Lists[$listName]
$i = $l.GetItemById($id)
答案3
如果文件中只有数字,您可以使用行尾字符进行查找和替换,并将其替换为您需要添加的所有内容。如下所示:
寻找
\r\n
代替
"\r\n$w = Get-SPWeb $urlWeb\r\n$l = $w.Lists[$listName]\r\n$i = $l.GetItemById($id)\r\n\r\n$id = "
这需要对第一个和最后一个数字进行一些手动清理,但除此之外,这只是一个替换全部步骤。确保将“查找和替换搜索模式”设置为扩展。