Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - удаление файлов со сложным наименованием и с кучей "служебных" символов

Ответить
Настройки темы
PowerShell - удаление файлов со сложным наименованием и с кучей "служебных" символов

Аватара для God-of-Chaos

Пользователь


Сообщения: 128
Благодарности: 4


Конфигурация

Профиль | Отправить PM | Цитировать


Каким образом удалять сложноименованные файлы находящимися по длинным путям...

пример
"C:\users\test\GRAPHISOFT\ARCHICAD-64 Папка Журнала\ARCHICAD-64 20.0.0 RUS R1\UsageLogger\Tracker\UsageLogSenderTool[1546929321][9488].track"
"C:\Users\test\AppData\Local\Microsoft\Feeds Cache\GWBZ7T1R\ieonline.microsoft[1].microsoft[1]"


Remove-item не удаляет.
Convert-path выдает пустое значение
$([regex]::Escape("C:\users\test\GRAPHISOFT\ARCHICAD-64 Папка Журнала\ARCHICAD-64 20.0.0 RUS R1\UsageLogger\Tracker\UsageLogSenderTool[1546929321][9488].track")) - выдает ерунду
получилось удалить только через [poshfile]::DeleteFile("C:\users\test\GRAPHISOFT\ARCHICAD-64 Папка Журнала\ARCHICAD-64 20.0.0 RUS R1\UsageLogger\Tracker\UsageLogSenderTool[1546929321][9488].track")

как путь можно преобразовать в читаемый для командлета remove-item? так как требуется возврат ошибки в случае проблем с удалением...

а вообще есть необходимость удалить папку профиля пользователя (например c:\users\test) со всем содержимым и включая саму папку

-------
~~~ Только Бог может судить Меня ~~~


Отправлено: 07:28, 01-12-2019

 

Аватара для YuS_2

Crazy


Contributor


Сообщения: 1218
Благодарности: 509

Профиль | Отправить PM | Цитировать


Цитата God-of-Chaos:
Remove-item не удаляет. »
У командлета есть параметр -LiteralPath, вместо -Path

Цитата God-of-Chaos:
$([regex]::Escape("C:\users\test\GRAPHISOFT\ARCHICAD-64 Папка Журнала\ARCHICAD-64 20.0.0 RUS R1\UsageLogger\Tracker\UsageLogSenderTool[1546929321][9488].track")) - выдает ерунду »
Код: Выделить весь код
[management.automation.wildcardpattern]::escape("стро[к]а")

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:11, 01-12-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


God-of-Chaos, он их не удаляет только из-за наличия квадратных скобок. Увы, это особенность всех языков, рассматривающих строки изначально не как чистые литералы.

Ещё на тему от Василия Гусева: Квадратные скобки в именах файлов | PowerShell и другие скрипты.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:58, 01-12-2019 | #3


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


God-of-Chaos, Remove-Item вообще криво реализован:
Цитата:
Because the Recurse parameter in Remove-Item has a known issue, the command in this example uses Get-ChildItem to get the desired files, and then uses the pipeline operator to pass them to Remove-Item.
Цитата God-of-Chaos:
находящимися по длинным путям...
пример
"C:\users\test\GRAPHISOFT\ARCHICAD-64 Папка Журнала\ARCHICAD-64 20.0.0 RUS R1\UsageLogger\Tracker\UsageLogSenderTool[1546929321][9488].track" »
длинные пути (Long Paths) - вполне конкретный термин, и он про пути длиннее 260 символов - и да, на них ваш скрипт тоже спотыкнётся, когда они встретятся

Цитата God-of-Chaos:
$([regex]::Escape("C:\users\test\GRAPHISOFT\ARCHICAD-64 Папка Журнала\ARCHICAD-64 20.0.0 RUS R1\UsageLogger\Tracker\UsageLogSenderTool[1546929321][9488].track")) - выдает ерунду »
Выдаёт он нормальный результат. Непонятно, зачем вы это делаете.

Цитата Iska:
он их не удаляет только из-за наличия квадратных скобок. Увы, это особенность всех языков, рассматривающих строки изначально не как чистые литералы. »
со строками в PoSh всё ok. Как верно заметил YuS_2, дело в неправильном использовании параметров

Цитата God-of-Chaos:
а вообще есть необходимость удалить папку профиля пользователя (например c:\users\test) со всем содержимым и включая саму папку »
вам будет гораздо проще использовать rmdir из cmd

Отправлено: 12:59, 01-12-2019 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - удаление файлов со сложным наименованием и с кучей "служебных" символов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Удаление файлов "компаньонов" ILexL Скриптовые языки администрирования Windows 1 23-01-2017 00:21
Ошибка - Firefox браузер по умолчанию через "установка и удаление" и "set access and defaults" jz828059 Microsoft Windows 2000/XP 2 17-01-2014 17:22
Интерфейс - как искать в содержимом файлов не "слово или фразу", а "вхождение символов"? w95w7 Microsoft Windows 2000/XP 0 11-10-2011 18:41
Удаление "неудаляемых" файлов в Windows Vista btc1 Хочу все знать 6 09-01-2008 23:09
Удаление из меню "ПУСК" Мастер переноса файлов hobbit25 Автоматическая установка Windows 2000/XP/2003 1 23-08-2007 13:57




 
Переход