Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 0
Регистрация: 30.10.2019
Сообщений: 59

Обход ограничения Windows на 15 файлов

03.09.2025, 19:46. Показов 2361. Ответов 17

Студворк — интернет-сервис помощи студентам
Всем привет, по кускам собрал код, который обрабатывает множество файлов, собирая из них информацию в таблицу в Ворде. Скомпилировал в .exe, пока тестил на рабочем столе - переварило любое количество файлов, но когда поместил в меню ПКМ через реестр, столкнулся с ограничением в 15 файлов. Как это обойти внутри кода?

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
param(
    [Parameter(ValueFromRemainingArguments)]
    [string[]] $files
)
$totalFileCount = $files.Count 
$targetFolderPath = Split-Path -Parent $files[0]
$word = New-Object -ComObject Word.Application
$word.Visible = $true
$doc = $word.Documents.Add() 
$table = $doc.Tables.Add($doc.Range(), 2, 2)
$doc.ActiveWindow.View.Zoom.Percentage = 60
Start-Sleep -Milliseconds 500
$table1 = $doc.Tables(1)
 
foreach ($file in $files) {
 
    $fileName = [System.IO.Path]::GetFileName($file)
    
    $fileSize = (Get-Item $file).length | ForEach-Object { "{0:N0}" -f $_ }
 
    $lastModified = (Get-Item $file).LastWriteTime.ToString('dd.MM.yyyy_HH:mm')
 
    $lastDate = (Get-Item $file).LastWriteTime.ToString('dd.MM.yyyy')
 
    $rowNumber = [array]::IndexOf($files, $file) + 2
    $currentRow = $table1.Rows.Item($rowNumber)
    $currentRow.Cells.Item(1).Range.Text = $fileName
    # Start-Sleep -Milliseconds 100
    $currentRow.Cells.Item(2).Range.Text = $fileSize
}
Write-Host "Готово"
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.09.2025, 19:46
Ответы с готовыми решениями:

Рекурсивный обход. Не могу сделать табуляцию. Обход с выводом имен файлов
Задание простое, ну по крайней мере на первый взгляд. Написать скрипт обхода вложенных директорий с...

Обход NAT провайдера с Windows Server 2012 R2 (и VPN?)
Есть у меня друг, которому не даёт житья провайдер на букву М (несколько я знаю, у него GPON),...

Windows server 2012 ограничение доступа к файловому хранилищу
Доброго времени суток коллеги! Возник вопрос. Есть сервер который используется как файловое...

17
 Аватар для volodin661
6627 / 2258 / 346
Регистрация: 10.12.2013
Сообщений: 7,815
03.09.2025, 21:11
микрософт уинуорд отлично открывает html с таблицами.

my.css
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
table {
    border-collapse: collapse; /* Ensures borders are collapsed into a single line */
    width: 100%; /* Optional: Adjust table width */
}
 
th, td {
    border: 1px solid #ccc; /* Thin, light gray border */
    padding: 8px; /* Optional: Add padding to cells */
    text-align: left; /* Optional: Align text within cells */
}
 
th {
    background-color: #f2f2f2; /* Optional: Header background color */
}

PowerShell
1
2
get-item 1.txt, 2.txt | ConvertTo-Html -As Table  -Property Name, Length, LastWriteTime  -CssURI my.css | out-file files.html
winword files.html
1
Эксперт .NET
 Аватар для Rius
13026 / 7591 / 1661
Регистрация: 25.05.2015
Сообщений: 23,091
Записей в блоге: 14
03.09.2025, 22:07
Цитата Сообщение от Vsenikizanyati Посмотреть сообщение
Как это обойти внутри кода?
А оно не в длине командной строки ~260?
0
 Аватар для alhaos
1927 / 544 / 153
Регистрация: 20.02.2019
Сообщений: 2,659
Записей в блоге: 65
05.09.2025, 08:22
Наверное в любом случае будут какие либо ограничения по длине если нужно вводить список файлов параметром, то думаю это можно сделать при помощи конфигурационного файла

powershell data file например.

about_Data_Files

PowerShell
1
2
3
4
5
6
7
8
9
10
@{
    files = @(
        "file1.txt",
        "file2.txt",
        "file3.txt",
        "file4.txt",
        "file5.txt",
        "file6.txt"    
    )
}
PowerShell
1
2
3
4
5
6
7
param(
    [string]$configFilename = "config.psd1"
)
 
$conf = Import-PowerShellDataFile $configFilename
 
$conf.files
1
Любознательный
 Аватар для YuS_2
7402 / 2248 / 359
Регистрация: 10.03.2016
Сообщений: 5,196
05.09.2025, 13:23
Цитата Сообщение от Rius Посмотреть сообщение
А оно не в длине командной строки ~260?
Здесь, видимо, имеется в виду одновременное (выделить-ПКМ-открыть) открытие файлов по ПКМ, там, действительно есть ограничение на 15 файлов... вроде бы даже есть какие-то способы обхода этого ограничения... вот, только к powershell это имеет отношение - совсем никакое.
1
 Аватар для volodin661
6627 / 2258 / 346
Регистрация: 10.12.2013
Сообщений: 7,815
05.09.2025, 13:33
Цитата Сообщение от YuS_2 Посмотреть сообщение
вроде бы даже есть какие-то способы обхода этого ограничения.
Предполагаю, имеется в виду возня с Windows Explorer; тогда им файлы скопировать,
а powershell-ом Get-Clipboard вытащить.
Вот только в 7.x опции вытаскивать файлы из клипбоарда нет, есть онли ин 5.1
0
Любознательный
 Аватар для YuS_2
7402 / 2248 / 359
Регистрация: 10.03.2016
Сообщений: 5,196
05.09.2025, 14:27
Цитата Сообщение от volodin661 Посмотреть сообщение
Вот только в 7.x опции вытаскивать файлы из клипбоарда нет, есть онли ин 5.1
ну, есть же другие способы:
PowerShell
1
2
add-type -ass presentationcore
[windows.clipboard]::getfiledroplist()
1
 Аватар для Storm Screamer
4834 / 1402 / 115
Регистрация: 21.04.2013
Сообщений: 8,556
05.09.2025, 15:42
Цитата Сообщение от Vsenikizanyati Посмотреть сообщение
когда поместил в меню ПКМ через реестр, столкнулся с ограничением в 15 файлов.
Windows обрезает список файлов, передаваемых через реестр, если общий размер строки превышает 8191 символ. Для большинства путей это происходит примерно на 15-м файле (зависит от длины путей).

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
param(
    [Parameter(ValueFromRemainingArguments)]
    [string[]] $files
)
 
# === КОД ДЛЯ ОБХОДА ОГРАНИЧЕНИЯ В 15 ФАЙЛОВ ===
if ($files.Count -eq 15) {
    try {
        $shell = New-Object -ComObject Shell.Application
        $explorerWindows = $shell.Windows()
        
        $newFiles = @()
        foreach ($window in $explorerWindows) {
            if ($window.LocationName -and $window.HWND) {
                $selectedItems = $window.Document.SelectedItems()
                foreach ($item in $selectedItems) {
                    if (-not $item.IsFolder) {
                        $newFiles += $item.Path
                    }
                }
                if ($newFiles.Count -gt 15) {
                    $files = $newFiles
                    break
                }
            }
        }
    }
    catch {
        Write-Warning "Не удалось получить полный список файлов через проводник."
    }
}
 
if ($files.Count -eq 0) {
    Write-Host "Нет файлов для обработки."
    exit
}
# ===========================================
 
$totalFileCount = $files.Count 
$targetFolderPath = Split-Path -Parent $files[0]
$word = New-Object -ComObject Word.Application
$word.Visible = $true
$doc = $word.Documents.Add() 
$table = $doc.Tables.Add($doc.Range(), $totalFileCount + 1, 2) # Исправлено: +1 для заголовка
$doc.ActiveWindow.View.Zoom.Percentage = 60
Start-Sleep -Milliseconds 500
$table1 = $doc.Tables(1)
 
# Заголовки таблицы
$table1.Rows.Item(1).Cells.Item(1).Range.Text = "Имя файла"
$table1.Rows.Item(1).Cells.Item(2).Range.Text = "Размер"
 
foreach ($file in $files) {
    $fileName = [System.IO.Path]::GetFileName($file)
    $fileSize = (Get-Item $file).length | ForEach-Object { "{0:N0}" -f $_ }
    $rowNumber = [array]::IndexOf($files, $file) + 2
    $currentRow = $table1.Rows.Item($rowNumber)
    $currentRow.Cells.Item(1).Range.Text = $fileName
    $currentRow.Cells.Item(2).Range.Text = $fileSize
}
 
Write-Host "Готово. Обработано файлов: $totalFileCount"
1
1656 / 272 / 65
Регистрация: 03.06.2020
Сообщений: 686
05.09.2025, 17:37
Цитата Сообщение от volodin661 Посмотреть сообщение
Вот только в 7.x опции вытаскивать файлы из клипбоарда нет
Попробовал, правда с линуксовым Thunar, Get-Clipboard вернул список файлов с полными путями.
0
Любознательный
 Аватар для YuS_2
7402 / 2248 / 359
Регистрация: 10.03.2016
Сообщений: 5,196
05.09.2025, 18:21
Цитата Сообщение от lesser Посмотреть сообщение
правда с линуксовым Thunar, Get-Clipboard вернул список файлов с полными путями.
на окнах индейская хижина, а не список файлов возвращается
0
6962 / 2857 / 1099
Регистрация: 06.06.2017
Сообщений: 9,696
07.09.2025, 09:35
Цитата Сообщение от Storm Screamer Посмотреть сообщение
# === КОД ДЛЯ ОБХОДА ОГРАНИЧЕНИЯ В 15 ФАЙЛОВ ===
Способ обработки выделенных в проводнике элементов списка известен, но как это может работать
Цитата Сообщение от Vsenikizanyati Посмотреть сообщение
в меню ПКМ через реестр
, если для каждого элемента требуется отдельный вызов? Такое применимо только для кнопки или хоткея с ярлыка.

Для этих дел (помимо кучи прочих) давно изобретены файлменеджеры с адекватной параметризацией, но люди и по сей день продолжают мучать безбожный проводник...
1
2 / 2 / 0
Регистрация: 30.10.2019
Сообщений: 59
08.09.2025, 19:32  [ТС]
Цитата Сообщение от YuS_2 Посмотреть сообщение
Здесь, видимо, имеется в виду одновременное (выделить-ПКМ-открыть) открытие файлов по ПКМ
да, именно так и задумывалось

Добавлено через 3 минуты
Цитата Сообщение от FlasherX Посмотреть сообщение
безбожный проводник...
таков путь) это на рабочем месте, там без вариантов...

Добавлено через 14 минут
попробовал ваш код, к сожалению при выделении больше 15 файлов проводник просто скрывает это приложение в меню ПКМ
0
Любознательный
 Аватар для YuS_2
7402 / 2248 / 359
Регистрация: 10.03.2016
Сообщений: 5,196
08.09.2025, 23:14
Цитата Сообщение от Vsenikizanyati Посмотреть сообщение
да, именно так и задумывалось
обход этого ограничения решается внесением в реестр параметра:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer
Name : MultipleInvokePromptMinimum
Type : DWORD
Только вот, так и не понял: при чем тут powershell?
0
Любознательный
 Аватар для YuS_2
7402 / 2248 / 359
Регистрация: 10.03.2016
Сообщений: 5,196
09.09.2025, 11:01
кстати, это есть в официальных источниках, например, здесь
1
 Аватар для volodin661
6627 / 2258 / 346
Регистрация: 10.12.2013
Сообщений: 7,815
09.09.2025, 11:48
напрашивающееся решение получения списка файлов без недельного обсуждения проблемы ⑮ негритят -
скопировать в Clipboard.
Предварительно устанавливается Clipboard Listener ( через P/Invoke AddClipboardFormatListener ), который
запускает процедуру сохранения полученного списка файлов в нужном формате ( самое разумное - HTML ).

Всё.
Дел на 10 минут - язык реализации C# + запрос ко вселенскому разуму.
0
Любознательный
 Аватар для YuS_2
7402 / 2248 / 359
Регистрация: 10.03.2016
Сообщений: 5,196
09.09.2025, 13:35
Цитата Сообщение от volodin661 Посмотреть сообщение
напрашивающееся решение получения списка файлов без недельного обсуждения проблемы
Да пока непонятно, в чем именно проблема...
Если в:
Цитата Сообщение от volodin661 Посмотреть сообщение
⑮ негритят -
скопировать в Clipboard.
Это пока, всё что понятно и ясно.

Цитата Сообщение от volodin661 Посмотреть сообщение
Предварительно устанавливается Clipboard Listener
- а вот это зачем?
Вот же 7 - всё делается в самом PS, без привлечения лишних сущностей... и без ограничений на количество.
А далее, уже использовать список файлов как требуется... естественно, при помощи powershell, раз уж это здесь обсуждается.

Но просили-то способы обхода ограничения в 15 файлов, а powershell таких ограничений не имеет... вроде бы... в общем, описание проблемы надо бы уточнить.
0
 Аватар для volodin661
6627 / 2258 / 346
Регистрация: 10.12.2013
Сообщений: 7,815
09.09.2025, 13:55
Цитата Сообщение от YuS_2 Посмотреть сообщение
Сообщение от volodin661 Предварительно устанавливается Clipboard Listener- а вот это зачем?
Минимизация телодвижений; Попадание в clipboard списка файлов из любого источника вызывает аутоматичное создание предопределённого файла.
0
161 / 49 / 3
Регистрация: 03.06.2020
Сообщений: 551
16.09.2025, 13:07
Цитата Сообщение от volodin661 Посмотреть сообщение
get-item 1.txt, 2.txt | ConvertTo-Html -As Table  -Property Name, Length, LastWriteTime  -CssURI my.css | out-file files.html
....
Скорее всего этот вариант с файлом.css не взлетит. Без доп.переменной и RAW
PowerShell
1
2
3
4
$ExternalFile = GC GetText.css -RAW
$Style = ("<style>`n") + $ExternalFile + ("`n</style>")
GI 02.txt, 03.txt, 04.txt, AllChangePassword04.txt | ConvertTo-Html -Title "ListTXT" -Head $style -As Table -Property Name, Length, LastWriteTime | out-file files.html
II files.html
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
body {
    background-color: rgb(196, 233, 158);
}
table {
    border-collapse: collapse; /* Ensures borders are collapsed into a single line */
    width: 100%; /* Optional: Adjust table width */
}
 
th, td {
    border: 3px solid #70da2a; /* Thin, light gray border */
    padding: 8px; /* Optional: Add padding to cells */
    text-align: center; /* Optional: Align text within cells */
}
 
th {
    background-color: #7855ca; /* Optional: Header background color */
}
Что-то близкое схватит файл.css
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.09.2025, 13:07
Помогаю со студенческими работами здесь

Ограничение канала на Windows XP Pro SP2
Доброе время суток. Хочу ограничить канал на доступ в инет. Инет раздается через комп-шлюз. Можно...

Ограничение пользователей на установку ПО в Windows XP Home Edition
Здравствуйте, дорогие коллеги! Недавно поставил виртуальную машину Windows XP Home Edition SP2....

Как поставить ограничение использование программ пользователям в windows server 2003
как поставить ограничение использование программ пользователям в windows server 2003 если...

Windows server 2003 ограничение IP
Как можно ограничить доступ к серверу? Не использую Маршрутизацию и удаленный доступ.

Ограничение доступа к удаленным рабочим столам в Windows Server 2003/2008
Как можно (помимо брандмауэра) запретить подключения к удаленному рабочему столу (mstsc) на сервер...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru