Компьютерный портал
| Расширенный
обработке файлов, имена которых содержат НЕКОТОРЫЕ ASCII символы
  • Страница 1 из 1
  • 1
Модератор форума: Barmenchik, Drinko, V-Efremov, sander23, MedMeks  
Вниманию читателей, использующих PShell: обнаружена проблема при
sysprg
Отредактировано sysprg - 29.10.2017, 21:12
Аватар sysprg

Почетный

Сообщений: 4673

Речь идет о символах, использование которых в среде Windows ДОПУСТИМО для NTFS, ReFS. К примеру символы [, ]. На cmd.exe консоли легко можно создать скажем файл с именем "a[b]c.txt:
Код

a:\@FUN>echo "a[b]c.txt file content">"a[b]c.txt"

a:\@FUN>type a[b]c.txt
"a[b]c.txt file content"

a:\@FUN>

Но вот, как файлы с такими именами обрабатывает PShell:
Код

PS E:\@Projects\BuildsHistory\@ProWS-RS4> "a[b]c.txt file content" | set-content "a[b]c.txt" -encoding unicode
Set-Content : A parameter cannot be found that matches parameter name 'encoding'.
At line:1 char:52
+ "a[b]c.txt file content" | set-content "a[b]c.txt" -encoding unicode
+                    ~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Set-Content], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.SetContentCommand

PS E:\@Projects\BuildsHistory\@ProWS-RS4> "a[b]c.txt file content" > "a[b]c.txt"
out-file : Cannot perform operation because the wildcard path a[b]c.txt did not resolve to a file.
At line:1 char:1
+ "a[b]c.txt file content" > "a[b]c.txt"
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OpenError: (a[b]c.txt:String) [Out-File], FileNotFoundException
    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.OutFileCommand
PS E:\@Projects\BuildsHistory\@ProWS-RS4> get-item a:\"@FUN\a*.txt"

    Directory: A:\@FUN

Mode                LastWriteTime         Length Name                    
----                -------------         ------ ----                    
-a----       2017-10-29     20:21             27 a[b]c.txt                    

PS E:\@Projects\BuildsHistory\@ProWS-RS4> $data = get-content a:\"@FUN\a*.txt"

PS E:\@Projects\BuildsHistory\@ProWS-RS4> $data
"a[b]c.txt file content"

PS E:\@Projects\BuildsHistory\@ProWS-RS4>

Невозможно ни переименовать файл "a[b]c.txt", ни удалить. Так что для выполнений этих действий приходится из PShell-скрипта запускать cmd.exe /c для выполнения команд переименования или удаления подобных файлов. Описанную проблему обнаружил СЛУЧАЙНО: ежу ясно, что никакому НОРМАЛЬНОМУ человеку не придет в голову создавать файл с именем a[b]c.txt. Но к большому сожалению об этом нисколько не задумываются те, кто сканирует книги и выкладывает на Флибусту файлы с именем Брюсов_Валерий.За_себя_или_за_другую?_.fb2.zip, Chuvstvo i chuvstvitiel'nost' [Razum i c - Dzhiein Ostien.zip
  • Страница 1 из 1
  • 1
Поиск:
В связи с введением в действие Постановления Правительства Российской Федерации от 14.11.2023 № 1905 т.н. "о запрете популяризации VPN" с 1 марта 2024 года - любое обсуждение способов обхода блокировок и VPN на портале запрещено!
Windows 11
Windows 10
Windows 8.1
Популярное
Опрос
Нравятся ли вам изменения произошедшие в Windows 10?
Всего ответов: 8509

Статистика Форума
Последние обновления тем
Популярные темы
Новые пользователи
24.11.2024|21:00
24.11.2024|19:15
24.11.2024|18:00
24.11.2024|17:27
24.11.2024|14:36
24.11.2024|13:50
24.11.2024|11:22
24.11.2024|02:20
24.11.2024|01:41
23.11.2024|16:03