|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - обрезка спец символов и создание папки при копировании файла с очень длинным путем |
|
PowerShell - обрезка спец символов и создание папки при копировании файла с очень длинным путем
|
Старожил Сообщения: 286 |
добрый.
Имеем такой скрипт с формой:
Add-Type -assembly System.Windows.Forms [System.Windows.Forms.Application]::EnableVisualStyles() $main_form = New-Object System.Windows.Forms.Form $main_form.Text ='автосборщик роликов (autoit + powershell)' $main_form.Width = 700 $main_form.Height = 300 $main_form.AutoSize = $true $TextBox = New-Object System.Windows.Forms.TextBox $TextBox.Width = 635 $TextBox.Height = 25 $TextBox.Location = New-Object System.Drawing.Point(25,65) $TextBox.Text = "введите название ролика 1..." $TextBox.Add_KeyDown({ if ($_.Modifiers -eq [System.Windows.Forms.Keys]::Control -and $_.KeyCode -eq [System.Windows.Forms.Keys]::A) { $TextBox.SelectAll() } }) $main_form.Controls.Add($TextBox) $TextBox1 = New-Object System.Windows.Forms.TextBox $TextBox1.Width = 635 $TextBox1.Height = 25 $TextBox1.Location = New-Object System.Drawing.Point(25,110) $TextBox1.Text = "введите название ролика 2..." $TextBox1.Add_KeyDown({ if ($_.Modifiers -eq [System.Windows.Forms.Keys]::Control -and $_.KeyCode -eq [System.Windows.Forms.Keys]::A) { $TextBox1.SelectAll() } }) $main_form.Controls.Add($TextBox1) $TextBox2 = New-Object System.Windows.Forms.TextBox $TextBox2.Width = 635 $TextBox2.Height = 25 $TextBox2.Location = New-Object System.Drawing.Point(25,155) $TextBox2.Text = "введите название ролика 3..." $TextBox2.Add_KeyDown({ if ($_.Modifiers -eq [System.Windows.Forms.Keys]::Control -and $_.KeyCode -eq [System.Windows.Forms.Keys]::A) { $TextBox2.SelectAll() } }) $main_form.Controls.Add($TextBox2) $button = New-Object System.Windows.Forms.Button $button.Text = 'ок' $button.Location = New-Object System.Drawing.Point(300,210) $button.add_Click({Click_Button}); $main_form.Controls.Add($button) function Click_Button { $main_form.Close() } $main_form.ShowDialog() $name1 = $TextBox.Text; $name2 = $TextBox1.Text; $name3 = $TextBox2.Text; $date = Get-Date -Format "ddMMyy" Start-Process "C:\Users\Admin\Desktop\run1.exe" -Wait Задача: 1) Значения TextBox.Text(1-3) пишутся в переменную, и нужны для дальнейшего использования при создании папки (п.2). В связи с этим, нужно чтобы при вводе текста (посредством ctrl + V) в поле ввода - сразу же обрезались/удалялись спецсимволы (на которые ругается винда при создании папки при их наличии, т.е ",","/" и т.д), а остались только допустимые. * т.е скопировал - , а при вставке в поле ввода осталось - ** как вариант можно $name1 = $TextBox.Text -replace '"', "" -replace '''', "" -replace ':', "" -replace ',', "" -replace '/', "" -replace '\\', "" 2) есть файл temp.mp4 по пути - очень\очень\очень\очень длинный путь с кучей символов, пробелов и русских букв\temp.mp4. *при работе с этими путями в проводнике, часто натыкаюсь на ошибку - file path too long. Поэтому проблему очень длинного пути нужно обязательно учесть. **видел где-то про то, что можно часть пути посадить в переменную (или что-то вроде того) и тогда проблема длинного пути уходит (не помню точно...) нужно temp.mp4 скопировать по очень\длинному\пути с русскими буквами\$date-$name1\кс\$name1.mp4". при этом папки "$date-$name1" с подпапкой "кс" - нет на момент копирования. Она должна создаваться. 3) изначальная папка с temp.mp4 - очень\очень\очень\очень длинный путь с кучей символов и русских букв\ - должна очищаться от всего содержимого, без удаления самой папки. заранее спасибо за помощь. |
|
Отправлено: 10:26, 10-06-2021 |
Забанен Сообщения: 793
|
1) Некорректные символы для путей и файлов :
Формируете из полученного набора регулярное выражение и применяете оператор -replace к тексту. 2) Если в системе разрешены длинные пути (>260 символов), лучше избегать рекурсии, отдав предпочтение обходу дерева каталога. Использование кириллицы лучше избегать в длинных путях (не только в виду схожести некоторых символов алфавитов, но и проблемы с буферной памятью). 3) см. пункт 2. |
Последний раз редактировалось greg zakharov, 10-06-2021 в 11:16. Отправлено: 11:09, 10-06-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 286
|
Профиль | Отправить PM | Цитировать greg zakharov, и тем не менее.. п.2 и п.3 надо работать как есть.
Какие есть варианты с обходом длинных путей? |
Отправлено: 11:28, 10-06-2021 | #3 |
Забанен Сообщения: 793
|
9119, не хотелось бы рубить с плеча и пороть горячку, нужно подумать как всё реализовать аккуратно.
|
Отправлено: 11:36, 10-06-2021 | #4 |
Старожил Сообщения: 286
|
Профиль | Отправить PM | Цитировать 1)
Цитата greg zakharov:
Или каждый знак ручками прописывать? ) 2) и как именно подставить параметр -replace непосредственно к textbox.text ? он сейчас выглядит так: |
||
Последний раз редактировалось 9119, 10-06-2021 в 12:29. Отправлено: 11:54, 10-06-2021 | #5 |
Забанен Сообщения: 793
|
|
Отправлено: 12:33, 10-06-2021 | #6 |
Старожил Сообщения: 286
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:04, 10-06-2021 | #7 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Создание текстового файла с набором символов | 4zz | Скриптовые языки администрирования Windows | 22 | 28-03-2019 13:11 | |
проблема удаления множества файлов с длинным путем | kupall | Хочу все знать | 10 | 19-01-2015 22:44 | |
Доступ - Ошибка при копировании файла или папки. | wertu1234321 | Microsoft Windows 2000/XP | 2 | 05-03-2013 22:26 | |
CMD/BAT - [решено] Анализ на количество символов в названии файла/папки | айкот | Скриптовые языки администрирования Windows | 8 | 04-10-2011 16:12 | |
Ошибка при копировании папки или файла | CarBon | Microsoft Windows 2000/XP | 4 | 14-05-2009 22:22 |
|