从文件中快速访问文件资源管理器的新图钉

时间:2019-01-04 23:07:38

标签: powershell explorer

具有一个脚本,可以使新的图钉从文件中快速访问文件资源管理器中

这是脚本:

#New pin to quick access in file Explorer from a file
$ShortcutsFile = 'H:\_ProfilBackup\Genveje.txt'
$listFile = Get-Content $ShortcutsFile

$o = new-object -com shell.application -Verbose

foreach ($line in Get-Content $ShortcutsFile) {
    if ($line -match $regex) {
        $o.Namespace($line).Self.InvokeVerb("pintohome")
    }
}

谁能解释它为什么起作用?

我对这句话有些困惑:

foreach ($line in Get-Content $ShortcutsFile) {
if ($line -match $regex)

尝试了其他方法从文件中读取内容。

但是只有在文件中只有一行时,它才起作用。

如果使用上述脚本,我只能使其与文件中的多行一起使用

1 个答案:

答案 0 :(得分:0)

至于……

  

“尝试了其他方法从文件中读取内容。”

...您在说什么其他方式?要读取文件,您要么必须如该帖子所示那样循环,要么将其带入原始文件。如果您尝试处理许多引脚,则意味着循环。该行正在执行的操作。

$regex

只是一个变量,可以将某些字符串与true或false进行比较,但是您不会显示代码的那一部分。

# Read the shortcuts file, one line at a time, to the end of the file
# If any line read, matches the regex string, do something with that match
foreach ($line in Get-Content $ShortcutsFile) {
if ($line -match $regex)

OP的更新

关于您的帖子和用例,可以对此进行调整。

# What is in the file
Get-Content -Path 'C:\Temp\QuickLinks.txt'

c:\scripts
C:\techtools
c:\temp


$ShellObj = New-Object -ComObject shell.application -Verbose
ForEach ($line in (Get-Content -Path 'C:\Temp\QuickLinks.txt')) 
{$ShellObj.Namespace($line).Self.InvokeVerb("pintohome")}