Получить-Childitem и скобки [] в пути - или: LiteralPath + Asterisk - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь использовать подстановочный знак (*) с LiteralPath, чтобы мой код тоже работал с путями в скобках.

В настоящее время я не получаю ошибок с моим кодом, но этоТакже не удаляю файл (ы), о которых идет речь.

$path="f:\test\test[lala] lulu\file.rar"
$remfile=$(get-childitem -LiteralPath $path )
$remove = $remfile.fullname.substring(0,$($remfile.fullname).length -3)
get-childitem $($remove + '*') | remove-item -force 

со строкой удаления, я убираю последние 3 символа имени. пока все хорошо.

write-output $remove
F:\test\test[lala] lulu\file.

последняя строка добавляет звездочку в строку поиска и не выдает ошибку. но это тоже ничего не удаляет. добавление еще одного «LiteralPath» в GCI последней строки приводит к ошибкам, поскольку звездочка не используется в качестве подстановочного знака.

как мне этого добиться?

-narf

1 Ответ

0 голосов
/ 03 октября 2019

Вот трюк. -filter не понимает скобки как символы подстановки, даже в PS 6.

get-childitem -filter file[*] | remove-item -whatif

РЕДАКТИРОВАТЬ: О, это каталог. Как насчет:

 get-childitem -LiteralPath 'F:\test\test[lala] lulu\' -filter file* | remove-item -WhatIf

Или, если вы уже были на диске F:

get-childitem -filter 'test\test[lala] lulu\file*' | remove-item -WhatIf

РЕДАКТИРОВАТЬ: Вы также можете внести в это место:

get-childitem -LiteralPath 'test[lala] lulu' -filter file* | 
where name -notlike *.txt | remove-item -WhatIf
...