Имя папки дедушки до имени файла

Как отметил @FelixKling, наиболее вероятным сценарием является то, что узлы, которые вы ищете, еще не существуют.

Однако современные методы разработки часто могут манипулировать элементами документа за пределами дерева документов либо с DocumentFragments, либо просто отсоединением / повторным подключением текущих элементов напрямую. Такие методы могут использоваться как часть шаблонов JavaScript или для предотвращения чрезмерных операций перерисовки / переплавки, в то время как элементы, о которых идет речь, сильно изменяются.

Аналогично, новая функциональность «Теневой DOM» развертывается в современных браузерах позволяет элементам быть частью документа, но не обрабатываться запросом document.getElementById и всеми его методами sibling (querySelector и т. д.). Это делается для инкапсуляции функциональных возможностей и, в частности, скрыть его.

Опять же, скорее всего, элемент, который вы ищете, просто (пока) в документе, и вы должны сделать, как предлагает Феликс , Тем не менее, вы также должны знать, что это все чаще является не единственной причиной того, что элемент может быть необоснованным (временно или постоянно).

2
задан Will 18 January 2019 в 15:49
поделиться

2 ответа

Самое простое решение - объединить расщепление строк с помощью оператора -split и блока сценариев с задержкой (который вы пытались использовать):

Get-ChildItem C:\Script –Recurse –File -Exclude [0-9][0-9]-[0-9]* |
  Rename-Item -NewName { 
    # Split the full path into its components.
    $names = 

Самое простое решение - объединить расщепление строк с помощью оператора -split и блока сценариев с задержкой (который вы пытались использовать):

[110]

-WhatIf предварительно просматривают операцию переименования; удалите его для фактического переименования.
Обратите внимание, как -Exclude используется с выражением подстановочного знака непосредственно с Get-ChildItem для исключения файлов, которые уже имеют целевой формат имени.

Основная причина, по которой ваш оригинал не работал, состоит в том, что вы вычислили одиночные, статические , $parent и $grandparent значения вместо получения значений, характерных для входного пути, из каждого входного пути.

Кроме того, ваш $grandparent расчет был излишне сложным; Полезный ответ Герта Яна Краайевельда показывает более простой способ.

.FullName -split '\\' # Compose the new file name from the relevant components and output it. '{0}-{1} {2}' -f $names[-3], $names[-2].Substring($names[-2].Length-4),

Самое простое решение - объединить расщепление строк с помощью оператора -split и блока сценариев с задержкой (который вы пытались использовать):

[110]

-WhatIf предварительно просматривают операцию переименования; удалите его для фактического переименования.
Обратите внимание, как -Exclude используется с выражением подстановочного знака непосредственно с Get-ChildItem для исключения файлов, которые уже имеют целевой формат имени.

Основная причина, по которой ваш оригинал не работал, состоит в том, что вы вычислили одиночные, статические , $parent и $grandparent значения вместо получения значений, характерных для входного пути, из каждого входного пути.

Кроме того, ваш $grandparent расчет был излишне сложным; Полезный ответ Герта Яна Краайевельда показывает более простой способ.

.Name } -WhatIf

-WhatIf предварительно просматривают операцию переименования; удалите его для фактического переименования.
Обратите внимание, как -Exclude используется с выражением подстановочного знака непосредственно с Get-ChildItem для исключения файлов, которые уже имеют целевой формат имени.

Основная причина, по которой ваш оригинал не работал, состоит в том, что вы вычислили одиночные, статические , $parent и $grandparent значения вместо получения значений, характерных для входного пути, из каждого входного пути.

Кроме того, ваш $grandparent расчет был излишне сложным; Полезный ответ Герта Яна Краайевельда показывает более простой способ.

0
ответ дан mklement0 18 January 2019 в 15:49
поделиться

Чтобы получить прародителя объекта $ file:

$file.Directory.Parent

Родительский каталог файла является членом «Directory» объекта файла.

Родительский каталог каталога является «родительским» элементом объекта каталога.

Это не сложно, но запутать это наверняка ...


Редактировать

Вы спрашивали мое решение:

Get-ChildItem C:\script -Recurse -File | ForEach-Object {
  $parent = 

Чтобы получить прародителя объекта $ file:

[110]

Родительский каталог файла является членом «Directory» объекта файла.

Родительский каталог каталога является «родительским» элементом объекта каталога.

Это не сложно, но запутать это наверняка ...


Редактировать

Вы спрашивали мое решение:

[111]

Я использовал параметр -file в Get-ChildItem, чтобы получать только файлы из структура папок. Я не уверен, что подходит в вашей ситуации

.Directory.Name $grandparent =

Чтобы получить прародителя объекта $ file:

[110]

Родительский каталог файла является членом «Directory» объекта файла.

Родительский каталог каталога является «родительским» элементом объекта каталога.

Это не сложно, но запутать это наверняка ...


Редактировать

Вы спрашивали мое решение:

[111]

Я использовал параметр -file в Get-ChildItem, чтобы получать только файлы из структура папок. Я не уверен, что подходит в вашей ситуации

.Directory.Parent.Name Rename-Item

Чтобы получить прародителя объекта $ file:

[110]

Родительский каталог файла является членом «Directory» объекта файла.

Родительский каталог каталога является «родительским» элементом объекта каталога.

Это не сложно, но запутать это наверняка ...


Редактировать

Вы спрашивали мое решение:

[111]

Я использовал параметр -file в Get-ChildItem, чтобы получать только файлы из структура папок. Я не уверен, что подходит в вашей ситуации

.FullName -NewName "$grandparent-$($parent.Substring($parent.length-4,4)) $(

Чтобы получить прародителя объекта $ file:

[110]

Родительский каталог файла является членом «Directory» объекта файла.

Родительский каталог каталога является «родительским» элементом объекта каталога.

Это не сложно, но запутать это наверняка ...


Редактировать

Вы спрашивали мое решение:

[111]

Я использовал параметр -file в Get-ChildItem, чтобы получать только файлы из структура папок. Я не уверен, что подходит в вашей ситуации

.name)" }

Я использовал параметр -file в Get-ChildItem, чтобы получать только файлы из структура папок. Я не уверен, что подходит в вашей ситуации

0
ответ дан Gert Jan Kraaijeveld 18 January 2019 в 15:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: