Новый пин-код для быстрого доступа в проводнике из файла - PullRequest
0 голосов
/ 05 января 2019

Имеет скрипт, который делает новый штифт для быстрого доступа в проводнике из файла

Вот скрипт:

#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 голосов
/ 05 января 2019

Что касается…

«Пробовали другие способы чтения содержимого из файла.»

... о каких еще способах ты говоришь? Чтобы прочитать файл, вы должны либо зациклить, как показано в посте, либо вы вносите его в сыром виде. Если вы пытаетесь обработать много контактов, это означает зацикливание. Это все, что делает эта линия.

$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")}
...