Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

Открыть новую тему     Написать ответ в эту тему

KLASS



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Старые и смежные темы: по CMD и в Программах | по PowerShell | В помощь системному администратору | Прикладное программирование

PowerShell
Версии | Ассоциация и подпись сценариев
Сценарий для ассоциации файлов PowerShell и запуска неподписанных скриптов.
 
Прочее
Расширение возможностей
Функции
Write-Color
Output-DebugString
Провайдеры
Готовые скрипты
Полезные ссылки | Будет ли репозиторий PowerShell на ru-board?
Книги в PDF
Cheat Sheets
 

Cmd
Для перекодирования кириллицы 866<—>1251 пользуйтесь онлайн сервисом Перекодировщик кириллицы
 
Готовые решения и частые вопросы
 
Описания работы команд и символов участниками темы:
setlocal enabledelayedexpansion и переменные окружения
символы & и && в командной строке
Переменная %0
 
Полезные ссылки и утилиты

WSH (VBScript, JScript)
Программирование "удобняшек" на VBScript

Примечания:
• Большие куски кода заключайте в тэг [ more ]
• Чтобы не копировались концевые пробелы из форума, жмите на ссылку "Редактировать" в посте, и уже из редактора копируйте код без пробелов иначе сценарий может работать неправильно. Также для удаления концевых пробелов пользуйтесь скриптом от Nagual, или VBS-Скрипт-Модулем от ViSiToR.
• Сторонние консольные утилиты можно использовать только в виде готового решения и только в рамках сценариев. Никаких обсуждений и обучений работе с утилитами не предусмотрено и прямо запрещено правилами топика.
Шапка и около-темные вопросы |

Всего записей: 11062 | Зарегистр. 12-10-2001 | Отправлено: 13:40 17-02-2018 | Исправлено: YuS 2, 08:24 19-06-2021
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
Цитата:
Выдается окно для выбора директории a la XP. Как можно сделать окно на PowerShell вида как начиная с Vista?


Код:
Add-Type -AssemblyName PresentationCore, PresentationFramework

# Configure open file dialog box
[Microsoft.Win32.OpenFileDialog] $dlg = [Microsoft.Win32.OpenFileDialog]::new()
$dlg.FileName = "Document"; # Default file name
$dlg.DefaultExt = ".txt"; # Default file extension
$dlg.Filter = "Text documents (.txt)|*.txt"; # Filter files by extension

# Show open file dialog box
$result = $dlg.ShowDialog();

# Process open file dialog box results
if ($result)
{
   # Open document
   $filename = $dlg.FileName;
}

 
Отсюда: OpenFileDialog Класс (Microsoft.Win32) | Microsoft Docs

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 08:34 24-05-2020
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Да, нет! Выбор папки с видом как в Vista. А не стандартный FolderBrowseDialog. ) Я поэтому и скрин прикрепил с ссылками по теме.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 09:50 24-05-2020 | Исправлено: farag, 09:54 24-05-2020
newhk



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Smitis
А (get-date).Hour будет как число?

Всего записей: 400 | Зарегистр. 02-02-2009 | Отправлено: 10:40 24-05-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
Да, нет! Выбор папки с видом как в Vista. А не стандартный FolderBrowseDialog. ) Я поэтому и скрин прикрепил с ссылками по теме.  

Что не так? скрины    
 
Добавлено:
newhk
Цитата:
А (get-date).Hour будет как число?

Я конечно не Smitis...    
 
Проверить тип: ((get-date).Hour).GetType()
Прочитать документацию.

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 10:43 24-05-2020
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Select Folder Картинкинадо, а не File. разные же)). В этом вся и проблема.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 11:49 24-05-2020 | Исправлено: farag, 11:49 24-05-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
Цитата:
Select Folder Картинкинадо, а не File. разные же)). В этом вся и проблема.

Так бы сразу, а то ссылки, ссылки, крылья, ноги
Такого нету. Нужно либы тащить. Типа Microsoft.WindowsAPICodePack, Ookii.Dialogs.Wpf...
оттуда: c# - Select folder dialog WPF - Stack Overflow

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 13:42 24-05-2020 | Исправлено: iNNOKENTIY21, 13:46 24-05-2020
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Все уже такое нагуглил, а как прикрутить к PS, бог его знает...

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 14:32 24-05-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
Цитата:
Все уже такое нагуглил, а как прикрутить к PS, бог его знает...

Как то так, примерно:
Ookii.Dialogs.Wpf.dll скачать, указать путь к ней.

Код:
Add-Type -Path .\Ookii.Dialogs.Wpf.dll

$dialog = [Ookii.Dialogs.Wpf.VistaFolderBrowserDialog]::new()

if ($dialog.ShowDialog())
{
   $dialog.SelectedPath
}

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 15:42 24-05-2020
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
Этого и боялся... Но все равно спасибо.
А почему

Код:
 
Add-Type -Path "C:\Desktop\Ookii.Dialogs.Wpf.dll"
$FolderBrowserDialog = [Ookii.Dialogs.Wpf.VistaFolderBrowserDialog]::new()
$FolderBrowserDialog.UseDescriptionForTitle = $true
$FolderBrowserDialog.Description = "Select a Destination
$FolderBrowserDialog.RootFolder = "MyComputer"
$FolderBrowserDialog.ShowDialog()
 

"не реагирует" ни на RootFolder?
 
Get-Member: https://imgur.com/a/wZZffj2
 

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 00:34 25-05-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
Цитата:
А почему  

А не знаю.    
 

Цитата:
Этого и боялся...

Не понял чего именно.
 
Да, чем дальше в лес... Захотел гуи, захотел диалог не комплектный, получите зависимость, сопутствующие проблемы, распишитесь

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 10:06 25-05-2020
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
https://pastebin.com/rC6NWhU3
 
https://stackoverflow.com/questions/50794132/iterate-over-json-and-remove-json-element-in-powershell
 
Читал, но что-то не понял, как удалить в JSON строку с customizableui-special-spring1
 

Код:
 
# не фурычит
$JSON = Get-Content -Path .\1.json | ConvertFrom-Json
if ($JSON.placements.'nav-bar'.PSObject.Properties.Value.'customizableui-special-spring1'
 

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 01:17 29-05-2020
YuS 2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
как удалить в JSON строку с customizableui-special-spring1

да чего там читать?  
всё достаточно просто:

Код:
$json = gc 'file.json' -enc utf8 -raw|convertfrom-json
 
#$json.placements."nav-bar" #для проверки содержимого
 
$json.placements."nav-bar" = foreach ($item in $json.placements."nav-bar"){
    if ($item -notmatch 'customizableui-special-spring1'){$item}
}
 
#$json.placements."nav-bar" #для проверки содержимого
 
$json|convertto-json -d 10|out-file 'file-out.json' -enc utf8

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 09:11 29-05-2020
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS 2
Спасибо. А через

Код:
 
PSObject.Properties.Remove
 

можно как-то? А то я думаю, надо много строк удалять. не каждый же раз писать цикл?

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 12:19 29-05-2020 | Исправлено: farag, 12:19 29-05-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag
nav-bar массив фиксированный, удалить нельзя. только создание нового, уже без нежелательного элемента.
вариант через.where

Код:
$Json = Get-Content -Path 1.json | ConvertFrom-Json
$Json.placements.'nav-bar' = $Json.placements.'nav-bar'.Where({$PSItem -ne "customizableui-special-spring1"})
$Json | ConvertTo-Json >> 1-result.json

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 12:26 29-05-2020 | Исправлено: iNNOKENTIY21, 12:27 29-05-2020
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iNNOKENTIY21
А можно принудительно как-то перемещать строки? Мне, допустим надо, чтобы вместо

Код:
 
      "nav-bar":[
         "back-button",
         "forward-button",
         "stop-reload-button",
         "home-button",
         "urlbar-container",
         "downloads-button",
         "library-button",
         "sidebar-button",
         "fxa-toolbar-menu-button"
      ],
 

была последовательность такая строго

Код:
 
      "nav-bar":[
         "back-button",
         "forward-button",
         "urlbar-container",
         "home-button",
         "stop-reload-button",
         "downloads-button",
         "library-button",
         "sidebar-button",
         "fxa-toolbar-menu-button"
      ],
 

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 13:09 29-05-2020
YuS 2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
можно как-то?

Нет, тип массива не тот, как правильно подсказывает iNNOKENTIY21
Только через преобразование типов. Например, так:

Код:
$json = gc file.txt -enc utf8 -raw|convertfrom-json
$arr = [collections.generic.list[system.string]]$json.placements.'nav-bar'
$null = $arr.remove('customizableui-special-spring1')
$json.placements.'nav-bar' = [array]$arr
$json|convertto-json -d 10|out-file file-out.txt -enc utf8

 
 

Цитата:
А то я думаю, надо много строк удалять. не каждый же раз писать цикл?

Можно через индекс элемента, можно через where-object, либо через цикл... и то, и другое, и третье - пересоздание массива, так что на выбор... ну или, как я показал выше, через преобразование типов...
 
Добавлено:
farag

Цитата:
допустим надо, чтобы вместо

Как будем определять надобность? Автоматом или руками?
Это массив, поэтому элементы, при пересоздании, можно перемещать как угодно... вопрос только в алгоритме.

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 13:29 29-05-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
А можно принудительно как-то перемещать строки?

Не по алфавиту хочешь, не понятно по какому принципу, так, что в ручную, при пересоздании массива.
 
А по алфавиту:
Код:
[array]::Sort($Json.placements.'nav-bar')

или в обратном порядке
Код:
[array]::Reverse($Json.placements.'nav-bar')

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 13:44 29-05-2020
farag



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YuS 2

Цитата:
Как будем определять надобность? Автоматом или руками?  

Руками. Нужна строгая последовательность. Такая:
 

Код:
 
      "nav-bar":[
         "back-button",
         "forward-button",
         "urlbar-container",
         "home-button",
         "stop-reload-button",
         "bookmarks-menu-button",
         "downloads-button",
         "fxa-toolbar-menu-button"
      ],
 

iNNOKENTIY21
Не, это же Firefox. Как "сказала", такая и последовательность. Это же последовательность элементов на панели инструментов браузера.
Я подумал, а как сделать, чтобы последовательность выше заменила, что бы ни было в nav-bar? Рациональнее же будет: заменить необходимым "списком" то, что уже есть? Но обязательно в строгой опять же последовательности.

Всего записей: 2474 | Зарегистр. 27-07-2009 | Отправлено: 14:12 29-05-2020
YuS 2



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
Руками. Нужна строгая последовательность.


Цитата:
а как сделать, чтобы последовательность выше заменила, что бы ни было в nav-bar?

 
Если руками, то создаем массив руками и заменяем им то, что есть в файле:

Код:
$json = gc 'file.json' -enc utf8 -raw|convertfrom-json
 
$replace = @(
    "back-button",
    "forward-button",
    "urlbar-container",
    "home-button",
    "stop-reload-button",
    "bookmarks-menu-button",
    "downloads-button",
    "fxa-toolbar-menu-button"
)
$json.placements.'nav-bar' = $replace
 
$json|convertto-json -d 10|out-file 'file-out.json' -enc utf8

Всего записей: 3218 | Зарегистр. 03-02-2009 | Отправлено: 14:37 29-05-2020
iNNOKENTIY21



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
farag

Цитата:
Я подумал, а как сделать, чтобы последовательность выше заменила, что бы ни было в nav-bar? Рациональнее же будет: заменить необходимым "списком" то, что уже есть?

Трудности перевода
Так?:

Код:

$Json = Get-Content -Path $PSScriptRoot/1.json | ConvertFrom-Json

$myNavBar = (
   "back-button",
   "forward-button",
   "urlbar-container",
   "home-button",
   "stop-reload-button",
   "bookmarks-menu-button",
   "downloads-button",
   "fxa-toolbar-menu-button"
)

$Json.placements.'nav-bar' = $myNavBar
$Json | ConvertTo-Json >> 1
-result.json

Всего записей: 3504 | Зарегистр. 16-08-2012 | Отправлено: 14:37 29-05-2020
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Сценарии для Windows


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru