Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Выделение в папке всех файлов одного расширения (http://forum.oszone.net/showthread.php?t=353794)

denis19 04-07-2023 19:50 3011545

Выделение в папке всех файлов одного расширения
 
Всем привет. Помогите с бантиком, или команда в реестр. Кнопка в контекстном меню, выделяет в папке все файлы того типа, на которую нажал мышью.
Вот в реестр есть похожие примеры, тоже по типу, только эти удаляют, либо оставляют.

Удалить все, кроме файлов этого типа
cmd.exe /q /c color 17 & (for /f "tokens=*" %%a in ("%1") do (for /f "delims=" %%i in ('dir "%%~dpa" /b /a:d 2^>nul') do rd /s /q "\\?\%%~dpa%%i") & (for /f "delims=" %%i in ('dir "%%~dpa" /b /a:-d 2^>nul ^| findstr /iv "%%~xa"') do del /f /q /a "\\?\%%~dpa%%i"))

Удалить только файлы этого типа
cmd.exe /q /c color 17 & (for /f "tokens=*" %%a in ("%1") do cd /d "%%~dpa" && del /f /q /a "*%%~xa")

А нужно выделение этого типа файлов на который нажал через контекстное меню. Заранее спасибо.

NickM 04-07-2023 20:52 3011548

Цитата:

Цитата denis19
Помогите с бантиком »

Можно от данного примера оттолкнуться.

denis19 04-07-2023 21:44 3011555

Цитата:

Цитата NickM
Можно от данного примера оттолкнуться. »

Неа, ошибку выдаёт аж в двух окошках. Подскажите пожалуйста что дополнить-удалить там?

Serguei Kouzmine 05-07-2023 01:38 3011563

Цитата:

Цитата denis19
выделяет в папке »

нужно больше информации - какой такой выделяет-шмыделяет ?
в смылсе - чего хотите добиться в итоге ?
какая изначальную цель ?

NickM 05-07-2023 07:22 3011565

Цитата:

Цитата Serguei Kouzmine
какой такой выделяет-шмыделяет? »

denis19, Сам выделяет и запускает сценарий.
Т.е. пользователю хочется автоматизировать выделение файлов в текущем окне проводника "Windows";

Цитата:

Цитата Serguei Kouzmine
чего хотите добиться в итоге? »

Щёлкать по любому файлу в проводнике, вызывать по ПКМ меню, выбирать строчку "Выделить файлы по расширению", к которому присобачен какой-нибудь сценарий, и в проводнике все файлы расширения выделенного файла выделяются;

Цитата:

Цитата Serguei Kouzmine
какая изначальную цель? »

Автоматизировать множественное выделение однотипных файлов, файлов с одинаковым расширением.

denis19 05-07-2023 09:41 3011569

Цитата:

Цитата Serguei Kouzmine
нужно больше информации - какой такой выделяет-шмыделяет ?
в смылсе - чего хотите добиться в итоге ?
какая изначальную цель ? »

Как обычная кнопка выделить "все", только эта будет выделять тоже все, но только с тем расширением, на который нажал мышью. А цель, чтоб избавиться от лишних кнопок вариантов удаления, копирования, перемещения и пр. С одной этой "выделить" я уже сам буду делать нужные действия.

NickM 05-07-2023 16:33 3011607

Цитата:

Цитата denis19
Неа, ошибку выдаёт аж в двух окошках. Подскажите пожалуйста что дополнить-удалить там? »

Так ведь это направление, с чего можно было бы начать.

Вот, второе направление.

В итоге, могло бы получиться что-нибудь этакое:

Запуск *.vbs сценария:
Код:

@echo off
set ext=%~x1
set ext=%ext:~1%
set cdir=%~dp0%
cscript //nologo сценарий.vbs "%cdir%"  %ext%

Сам *.vbs-сценарий:
Код:

Option Explicit

Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim oList : Set oList = CreateObject("System.Collections.ArrayList")
Dim objShellAPP : Set objShellAPP = CreateObject("Shell.Application")
Dim oItem
GetFileFolder objFSO.GetFolder(WScript.Arguments(0))
With objShellAPP.Windows(objShellAPP.Windows.Count - 1).document
For Each oItem In oList
.SelectItem .Folder.Items.Item(oItem), 17
Next
End With

Sub GetFileFolder(objFolder)
Dim objFile, objSubFolder
For Each objFile In objFolder.Files
If LCase(objFSO.GetExtensionName(objFile.Name)) = WScript.Arguments(1) Then
oList.Add objFile.Name
End If
Next
End Sub

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

Serguei Kouzmine 05-07-2023 16:33 3011608

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

о заколачивании гвоздей микроскопом мечтаете
(другими словами)

напишите ярлык в котором скриптюня в котором комдана

Код:

сделать то что надо %~d1 *.%~x1.
и его вызывайте

denis19 05-07-2023 22:52 3011627

Цитата:

Цитата NickM
Запуск *.vbs сценария: »

Ни тот ни другой не работает. Я не понял как из запускать. Может их объединять надо?

NickM 06-07-2023 06:22 3011633

Вложений: 1
Цитата:

Цитата denis19
Ни тот ни другой не работает. Я не понял как из запускать. Может их объединять надо? »

Работает именно так как и заявлено, смотрим:
Файл 168603

denis19 06-07-2023 10:45 3011640

Цитата:

Цитата NickM
Работает именно так как и заявлено, смотрим: »

А меня почему то нет. Перепробовал все команды и в разных файлах, перетаскиванием на vbs и cmd и кнопка из реестра, не фурычит. Так же в реестре команды запуска скриптов разные, wscript //nologo my_script.vbs и cscript //nologo my_script.vbs. Но никак.
https://cloud.mail.ru/public/UT5p/mQFdY84yj

NickM 06-07-2023 12:14 3011644

Цитата:

Цитата denis19
А меня почему то нет. »

1. Вы файлу *.vbs-сценария дали одно наименование:
Цитата:

Выделить.vbs
,а в "Выделить.cmd" вызываете как:
Цитата:

сценарий.vbs
2. Раз в файле "Выделить.cmd" используется кириллица, то кодировку ему следует задавать как CP866.

denis19 06-07-2023 13:57 3011659

Цитата:

Цитата NickM
Раз в файле "Выделить.cmd" используется кириллица, то кодировку ему следует задавать как CP866. »

Да разные имена делал. Но нет.

NickM 06-07-2023 14:05 3011660

Цитата:

Цитата denis19
Да разные имена делал. Но нет. »

Приложите, то, что Вы сделали, после сказанного Мною выше.

denis19 06-07-2023 15:17 3011662

Вложений: 1
Цитата:

Цитата NickM
Приложите, то, что Вы сделали, после сказанного Мною выше. »

Я же сказал, и команды и имена у файлов самые разные, и wscript //nologo my_script.vbs и cscript //nologo my_script.vbs, и коротко vbs и cmd.http://forum.oszone.net/attachment.p...1&d=1688645790

NickM 06-07-2023 15:29 3011663

Цитата:

Цитата denis19
Я же сказал, »

Прикрепите содержимое в архиве, как прикрепляли ранее - погляжу и подскажу в чём ошибка.

denis19 06-07-2023 15:42 3011664

Цитата:

Цитата NickM
Прикрепите содержимое в архиве, как прикрепляли ранее »

А видео то видели в облаке? (тут не смог выложить). Там только самый верхний cmd срабатывает какой то скрытый процесс, но непонятно что именно происходит. Что ещё и куда именно прикрепить?

Цитата:

Цитата denis19
тут не смог выложить »

[IMG]file:///C:/Users/Admin/Desktop/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0/COPYtext/%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B0%20(2)/%D0%94%D0%B5%D0%BC%D0%BE%D0%BD%D1%81%D1%82%D1%80%D0%B0%D1%86%D0%B8%D1%8F.gif[/IMG]

NickM 06-07-2023 16:06 3011668

Цитата:

Цитата denis19
видели в облаке? »

Цитата:

Цитата denis19
Там только самый верхний cmd срабатывает какой то скрытый процесс, но непонятно что именно происходит. »

Именно на содержимое этого архива и был дан этот ответ;

Цитата:

Цитата denis19
Что ещё и куда именно прикрепить? »

Таким же образом как и ранее, выложите в облако Ваш конченый вариант, с Вашими конечными правками;

+

Исправил недочёт *.cmd-сценарии, в части определения расширения (что-то упустил из виду, что расширение бывает и больше 3-х символов):
Код:

set ext=%ext:~1%

denis19 06-07-2023 16:35 3011671

Цитата:

Цитата NickM
set ext=%ext:~1% »

А куда ставить или заменять вместо чего? Как в итоге будет выглядеть? У меня уже мозги пухнут. :(

NickM 06-07-2023 17:34 3011676

Цитата:

Цитата denis19
А куда ставить или заменять вместо чего? Как в итоге будет выглядеть? »

Весь код в этом посте;

Цитата:

Цитата denis19
У меня уже мозги пухнут. »

Цитата:

Цитата NickM
Таким же образом как и ранее, выложите в облако Ваш конченый вариант, с Вашими конечными правками; »


denis19 06-07-2023 18:19 3011684

Цитата:

Цитата NickM
Таким же образом как и ранее, выложите в облако Ваш конченый вариант, с Вашими конечными правками; » »

Вот два.https://cloud.mail.ru/public/KCLM/yfKzuCYEB

NickM 06-07-2023 18:35 3011686

Цитата:

Цитата denis19
Вот два »

Вы проигнорировали:
Цитата:

Цитата NickM
2. Раз в файле "Выделить.cmd" используется кириллица, то кодировку ему следует задавать как CP866. »

Что здесь не понятно?
Либо сохраняйте *.cmd в указанной кодировке, либо не используйте кириллицу.

В остальном всё работает.

denis19 06-07-2023 19:22 3011693

Цитата:

Цитата NickM
В остальном всё работает. »

Вот сейчас работает. Но только перетаскиванием.
Как теперь можно бантик привязать к кнопке в контекстное меню в реестре? Уже пробовал, никак.

NickM 06-07-2023 19:29 3011696

Цитата:

Цитата denis19
Как теперь можно бантик привязать к кнопке в контекстное меню в реестре?»

Даже и не в курсе;

Цитата:

Цитата denis19
Уже пробовал, никак. »

Что именно пробовали?

denis19 06-07-2023 19:38 3011699

Цитата:

Цитата NickM
Что именно пробовали? »

Путь к бантику в реестр, чтоб выделять кнопкой из контекстного меню. Думаю там не просто путь, строку чем то дополнять надо, как например wscript.exe, или кавычки-проценты "%1". Такими не хочет работать.

denis19 06-07-2023 20:46 3011706

Цитата:

Цитата NickM
Что именно пробовали? »

Всё, запуск из реестра сам доделал, это путь в кавычках, а в конце "%1". Но заметил что это работает только в той папке где лежат эти бантик и скрипт. Как можно запускать в любой папке?

NickM 06-07-2023 21:14 3011710

Вложений: 1
Цитата:

Цитата denis19
Но заметил что это работает только в той папке где лежат эти бантик и скрипт. »

Всё верно, размещайте по нужному пути, и дорабатывайте сценарий.

Следует понимать - Вам подсказали один из возможных вариантов, а не готовое решение.

В конечном случае можно использовать только *.vbs сценарий и это может выглядеть так, например:
Файл 168605

denis19 06-07-2023 21:42 3011713

Цитата:

Цитата NickM
.vbs сценарий и это может выглядеть так, например: »

Ладно. Спасибо хоть за это. Только не понял что на видео нового, вроде так же. Что там по другому?

NickM 06-07-2023 22:20 3011716

Цитата:

Цитата denis19
Только не понял что на видео нового »

Ничего нового - просто как итог темы;

Цитата:

Цитата denis19
Что там по другому? »

В принципе ничего - показан пункт меню и работа сценария, который был разработан на том vbs-коде, который был упомянут в данной теме.

Вы достигли желаемого?

Поняли, как работает сценарий?

Поняли направление по его модернизации/ улучшению?

denis19 06-07-2023 22:31 3011717

Цитата:

Цитата NickM
Вы достигли желаемого? »

Почти. Она только в одной папке работает. Спасибо.

NickM 07-07-2023 06:25 3011734

Вложений: 1
Цитата:

Цитата denis19
Почти. Она только в одной папке работает. »

Хмм:
Цитата:

Цитата NickM
Всё верно, размещайте по нужному пути, и дорабатывайте сценарий. »

Цитата:

Цитата denis19
Спасибо хоть за это »

Цитата:

Следует понимать - Вам подсказали один из возможных вариантов, а не готовое решение.
Во вложении *.vbs сценарий, который выполняет выделение в текущем окне проводника файлов по расширению, и *.reg файл, который регистрирует пункт меню для указанного выше действия.

Архив распаковать по пути:
Код:

C:\OSZone\SelFilesExt\
Файл 168606

При необходимости задания другого пути размещения файла *.vbs сценария, редактируйте *.reg файл и применяйте его повторно.

denis19 07-07-2023 12:43 3011770

Цитата:

Цитата NickM
SelFilesExt.zip »

Да давно кнопку сделал. Вот ещё как работает.
До
@echo off
set ext=%~x1
set ext=%ext:~1%
set cdir=%~dp0%
cscript //nologo select.vbs "%cdir%" %ext%

И после
@echo off
set "ext=%~x1"
set "ext=%ext:~1%"
cscript //nologo "%~dp0select.vbs" "%cd%" %ext%

Но непонятно почему иногда ошибка выскакивает. Надо папку с файлами закрыть и опять открыть.

NickM 07-07-2023 12:54 3011773

Цитата:

Цитата denis19
Но непонятно почему иногда ошибка выскакивает. Надо папку с файлами закрыть и опять открыть. »

Здесь *.cmd не используется:
Цитата:

Цитата NickM
Во вложении *.vbs сценарий, который выполняет выделение в текущем окне проводника файлов по расширению, и *.reg файл, который регистрирует пункт меню для указанного выше действия. »



Время: 10:38.

Время: 10:38.
© OSzone.net 2001-