Компьютерный форум 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=185240)

Corsag21 12-09-2010 07:56 1493473

Скрипт для создания деинсталлятора файлов в папке.
 
Добрый день.
1) Напишите пожалуйста скрипт, чтобы он создавал скрипт для удаления всех файлов в папке, которую я указываю.
2) Как сделать, чтобы этот скрипт можно было запускать через клик правой кнопкой мыши по папке?

El Sanchez 12-09-2010 14:43 1493695

Цитата:

Цитата Corsag21
Напишите пожалуйста скрипт, чтобы он создавал скрипт для удаления всех файлов в папке, которую я указываю »

Это всего лишь одна команда:
Код:

Del /F /Q "путь к папке"
Цитата:

Цитата Corsag21
Как сделать, чтобы этот скрипт можно было запускать через клик правой кнопкой мыши по папке? »

Так как в задании не оговорено удалять файлы из подпапок и/или подпапки, то:
Код:

@Echo Off
Reg Add "HKCR\Directory\shell\DeletFilesFromFolder" /v MUIVerb /d "Удалить файлы из папки" /f >nul
Reg Add "HKCR\Directory\shell\DeletFilesFromFolder\command" /ve /d "cmd /c Start /MIN \"\" cmd /c \"Del /F /Q \"%%1\" ^>nul\"" /f >nul


Corsag21 12-09-2010 16:49 1493773

Извиняюсь, не совсем ясно выразился. Этот скрипт мне нужен для удобного удаления плагинов в tes4 oblivion. Все плагины кидаются в папку Data, и если нужно удалить один плагин, то приходится искать все файлы, которые относятся к плагину и удалять их по отдельности, тем более они находятся в разных подпапках. Поэтому мне бы хотелось, чтобы до копирования плагина я мог сделать скрипт .bat или типа того такого вида:

del \meshes\dungeons\AyleidRuins\exterior\OOOardoor01Varastal.nif
del \Textures\dungeons\misc\OOOSpawnFishCrates\duncrate01OOO.dds
и т. д.

для всех файлов в нужной папке.

El Sanchez 14-09-2010 11:06 1494992

Corsag21, понятно.
Так как я не знаю вашей ОС, то предложу 2 варианта - для WinXP и Win7(/Vista?)

Для XP:
Код:

@Echo Off
Set DataDir=C:\Program Files\Oblivion\Data
Set SourcePlugin=C:\Installs\Games\Oblivion\OblivionPatches

:: ================================
Set DataDir=%DataDir:(=^^^^(%
Set DataDir=%DataDir:)=^^)%
SetLocal EnableDelayedExpansion
For /D %%A In ("%SourcePlugin%\*") Do (
        Echo @Echo Off>"%%A\Install %%~nA.bat"
        Echo Reg Query "HKCR\Directory\shell\DeletePlugin_%%~nA" /v Extended 1^>nul 2^>^&1^&^&GoTo :UnInstall^|^|GoTo :Install>>"%%A\Install %%~nA.bat"
        Echo.>>"%%A\Install %%~nA.bat"
       
        Echo :Install>>"%%A\Install %%~nA.bat"
        Echo Reg Add "HKCR\Directory\shell\DeletePlugin_%%~nA" /v MUIVerb /d "Удалить плагин %%~nA" /f 1^>nul 2^>nul>>"%%A\Install %%~nA.bat"
        Echo Reg Add "HKCR\Directory\shell\DeletePlugin_%%~nA" /v Extended /f 1^>nul 2^>nul>>"%%A\Install %%~nA.bat"
        Echo Reg Add "HKCR\Directory\shell\DeletePlugin_%%~nA\command" /ve /d "\"%DataDir%\Uninstall %%~nA.bat\"" 1^>nul 2^>nul>>"%%A\Install %%~nA.bat"
        Echo Ren %%0 "Uninstall %%~nA%%~x0">>"%%A\Install %%~nA.bat"
        Echo GoTo :EOF>>"%%A\Install %%~nA.bat"
        Echo.>>"%%A\Install %%~nA.bat"

        Echo :UnInstall>>"%%A\Install %%~nA.bat"
        For /F "Tokens=*" %%B In ('Dir /B /S /A-D "%%A" 2^>nul') Do (
                Set SourceFilePath=%%B
                Call Set DestFilePath=%%SourceFilePath:%%A=%DataDir%%%
                If /I Not "%%~nB"=="Install %%~nA" Echo Del /F /Q "!DestFilePath!" ^>nul>>"%%A\Install %%~nA.bat"
        )
        Echo Reg Delete "HKCR\Directory\shell\DeletePlugin_%%~nA" /f 1^>nul 2^>nul>>"%%A\Install %%~nA.bat"
        Echo Del /F /Q %%0 ^>nul>>"%%A\Install %%~nA.bat"
)

Для Win7:
Код:

@Echo Off
Set DataDir=C:\Program Files\Oblivion\Data
Set SourcePlugin=C:\Installs\Games\Oblivion\OblivionPatches

:: ================================
Set DataDir=%DataDir:(=^^^^(%
Set DataDir=%DataDir:)=^^)%
SetLocal EnableDelayedExpansion
For /D %%A In ("%SourcePlugin%\*") Do (
        Echo @Echo Off>"%%A\Install %%~nA.bat"
        Echo Reg Query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\CommandStore\shell\%%~nA" /v Icon 1^>nul 2^>^&1^&^&GoTo :UnInstall^|^|GoTo :Install>>"%%A\Install %%~nA.bat"
        Echo.>>"%%A\Install %%~nA.bat"

        Echo :Install>>"%%A\Install %%~nA.bat"
        Echo Reg Add "HKCR\Directory\shell\DeletePlugins" /v MUIVerb /d "Удалить плагины Oblivion" /f ^>nul>>"%%A\Install %%~nA.bat"
        Echo Reg Add "HKCR\Directory\shell\DeletePlugins" /v Extended /f ^>nul>>"%%A\Install %%~nA.bat"

        Echo Reg Query "HKCR\Directory\shell\DeletePlugins" /v SubCommands 1^>nul 2^>^&1^&^&^(^^>>"%%A\Install %%~nA.bat"
        Echo For /F "Tokens=2*" %%%%I In ^('Reg Query "HKCR\Directory\shell\DeletePlugins" /v SubCommands^^^|Find "REG_SZ" 2^^^>nul'^) Do ^^>>"%%A\Install %%~nA.bat"
        Echo Reg Add "HKCR\Directory\shell\DeletePlugins" /v SubCommands /d "%%%%J;%%~nA" /f 1^>nul 2^>nul^)^|^|^(^^>>"%%A\Install %%~nA.bat"
        Echo Reg Add "HKCR\Directory\shell\DeletePlugins" /v SubCommands /d "PDFViewer" /f 1^>nul 2^>nul^)>>"%%A\Install %%~nA.bat"

        Echo Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\CommandStore\shell\%%~nA" /ve /d "Удалить %%~nA" /f ^>nul>>"%%A\Install %%~nA.bat"
        Echo Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\CommandStore\shell\%%~nA" /v Icon /d "shell32.dll,-240" /f ^>nul>>"%%A\Install %%~nA.bat"
        Echo Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\CommandStore\shell\%%~nA\command" /ve /d "\"%DataDir%\Uninstall %%~nA.bat\"" /f ^>nul>>"%%A\Install %%~nA.bat"
        Echo Ren %%0 "Uninstall %%~nA%%~x0">>"%%A\Install %%~nA.bat"
        Echo GoTo :EOF>>"%%A\Install %%~nA.bat"
        Echo.>>"%%A\Install %%~nA.bat"
        Echo :UnInstall>>"%%A\Install %%~nA.bat"
        For /F "Tokens=*" %%B In ('Dir /B /S /A-D "%%A" 2^>nul') Do (
                Set SourceFilePath=%%B
                Call Set DestFilePath=%%SourceFilePath:%%A=%DataDir%%%
                If /I Not "%%~nB"=="Install %%~nA" Echo Del /F /Q "!DestFilePath!" ^>nul>>"%%A\Install %%~nA.bat"
        )
        Echo Reg Delete "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\CommandStore\shell\%%~nA" /f 1^>nul 2^>nul>>"%%A\Install %%~nA.bat"
        Echo For /F "Tokens=2*" %%%%I In ^('Reg Query "HKCR\Directory\shell\DeletePlugins" /v SubCommands^^^|Find "REG_SZ" 2^^^>nul'^) Do Set SubCommand=%%%%J>>"%%A\Install %%~nA.bat"
        Echo Set SubCommand=%%SubCommand:%%~nA=;%%>>"%%A\Install %%~nA.bat"
        Echo Set SubCommand=%%SubCommand:;;;=;%%>>"%%A\Install %%~nA.bat"
        Echo Set SubCommand=%%SubCommand:;;=;%%>>"%%A\Install %%~nA.bat"
        Echo If "%%SubCommand%%"==";" ^(Reg Delete "HKCR\Directory\shell\DeletePlugins" /f 1^>nul 2^>nul^&Del /F /Q %%0 ^>nul^)>>"%%A\Install %%~nA.bat"
        Echo If Not "%%SubCommand%%"==";" ^(>>"%%A\Install %%~nA.bat"
        Echo SetLocal EnableDelayedExpansion>>"%%A\Install %%~nA.bat"
        Echo If "^!SubCommand:~0,1^!"==";" Set SubCommand=^^!SubCommand:~1^^!>>"%%A\Install %%~nA.bat"
        Echo If "^!SubCommand:~-1^!"==";" Set SubCommand=^^!SubCommand:~0,-1^^!>>"%%A\Install %%~nA.bat"
        Echo Reg Add "HKCR\Directory\shell\DeletePlugins" /v SubCommands /d "^!SubCommand^!" /f 1^>nul 2^>nul>>"%%A\Install %%~nA.bat"
        Echo Del /F /Q %%0 ^>nul^)>>"%%A\Install %%~nA.bat"
)

Вам нужно будет только изменить пути (выделено красным) к папкам Data (для примера C:\Program Files\Oblivion\Data) и папке с плагинами, предназначенными для установки (для примера C:\Installs\Games\Oblivion\OblivionPatches). Чтобы все работало придерживайтесь следующего:
  1. В папке OblivionPatches должны быть подпапки с уникальными именами с файлами плагинов (например, файлы плагина BlaBlaBla (папки meshes, textures и т.д.) должны быть в папке OblivionPatches в подпапке BlaBlaBla). Уникальное имя подпапки будет фигурировать в контекстном меню, поэтому выбирайте понятные названия.
  2. При запуске одного из этих 2 скриптов в папках плагинов создадутся батники вида Install "имя плагина".bat. Когда захотите установить плагин в игру просто скопируйте все из, например, BlaBlaBla (папки meshes, textures, батник и т.д.) в папку Data игры.
  3. В итоге, если скопировали несколько плагинов, то в папке Data будет несколько батников Install "имя плагина".bat. Запустите те, которые хотите "установить" и прописать в контекстном меню. При этом батник поменяет свое имя на Uninstall "имя плагина".bat. Это значит, что батник готов к удалению файлов плагина и запись в контекстном меню присутствует. Захотите удалить плагин либо запускайте батник, либо через контекстное меню.
  4. Дабы не захламлять контекстное меню записями, вызывайте его при нажатой клавише Shift.
  5. Только для Win7 сделано каскадное меню, для XP каскадное меню без shell extension сделать нельзя, поэтому записи в основном меню.

З.Ы. Надеюсь, понятно объяснил. :)
З.Ы.Ы. Легче полноценный инсталлятор написать, чем инсталлятор на батниках :)

Corsag21 14-09-2010 17:58 1495286

Спасибо


Время: 04:01.

Время: 04:01.
© OSzone.net 2001-