Войти

Показать полную графическую версию : Поиск файлов и их переименовка через bat-файл


loviii
12-12-2018, 07:36
Здравствуйте.

Хочу реализовать отключение и включение возможности использования принтера на компьютере (в независимости от его конфигурации) с помощью bat-файла (для всех версий Windows; ну или хотя бы начиная с Windows 7) следующим образом:

Отключение:
переименовать все файлы spoolsv.exe на компьютере в abc.dll
переименовать все файлы spoolsv.exe.mui на компьютере в abc.dll.mui

Включение обратно:
переименовать обратно все файлы abc.dll на компьютере в spoolsv.exe
переименовать обратно все файлы abc.dll.mui на компьютере в spoolsv.exe.mui

Места хранения spoolsv.exe и spoolsv.exe.mui:
1-е место:
"%windir%\system32\spoolsv.exe"
"%windir%\system32\ru-RU\spoolsv.exe.mui"
2-е место:
Рандомно в подпапках "%windir%\winsxs"

переименование для отключения в 1-м месте хранения я выполнил:

taskkill /f /im "spoolsv.exe"

set NewName1=abc.dll
set NewName2=abc.dll.mui

set source=%windir%\system32\spoolsv.exe
if exist "%source%" (
takeown /F "%source%"
echo y|cacls "%source%" /G %username%:f
ren "%source%" "%NewName1%"
)

set source=%windir%\system32\ru-RU\spoolsv.exe.mui
if exist "%source%" (
takeown /F "%source%"
echo y|cacls "%source%" /G %username%:f
ren "%source%" "%NewName2%"
)

Помогите, пожалуйста, дописать этот батник для 2-ого места хранения, т.е. составить поиск по всем подпапкам папки "%windir%\winsxs", находя и переименовывая в ней искомые файлы. Желательно не по отдельному циклу для spoolsv.exe и spoolsv.exe.mui, а за один цикл, чтобы быстрее работало.

Батник будет хранится на флешке, защищенной от записи, т.е. никаких вспомогательных логов на ней создаваться не сможет.

Заранее спасибо.

Iska
12-12-2018, 07:49
Нахрена Зачем?!

loviii
12-12-2018, 08:15
Нахрена Зачем?! »
Захреном Не спамьте плиз, если не хотите помогать.

alpap
12-12-2018, 14:46
отключение и включение возможности использования принтера »
что это означает?

вот перезапуск службы печати:

@echo off
sc stop Spooler|>nul find /i "Stop" && echo Служба Spooler остановлена
sc start Spooler|>nul find /i "Start" && echo Служба Spooler запущена
pause


вот подключение сетевого принтера:

@echo off
rundll32 printui.dll,PrintUIEntry /c "\\Comp1" /dn /n "\\Comp2\Samsung ML-2250"
rundll32 printui.dll,PrintUIEntry /in /n "\\Comp2\Samsung ML-2250"
rundll32 printui.dll,PrintUIEntry /y /n "\\Comp2\Samsung ML-2250"
exit


есть еще команды, с помощью которых можно работать с адаптерами отвечающими за печать (останавливать, запускать)
а вот что вы творите неясно, хотя бы пояснили почему так или почему именно так как вы пытаетесь делать.

DJ Mogarych
12-12-2018, 14:51
Может, вместо подобного извращения отключить службу печати?

mwz
12-12-2018, 21:36
отключение и включение возможности использования принтера на компьютере (в независимости от его конфигурации) »

"Всё украдено придумано до нас!"

Выключение:
setlocal
net stop spooler
TASKKILL /F /IM spoolsv.exe /T

Включение (с предварительной очисткой очередей печати — если они есть: иначе возможны проблемы при последующей печати):

setlocal
del /Q /s /F /A %windir%\system32\spool\PRINTERS\*.*
del /Q /s /F /A %windir%\system32\spool\Servers\*.*
net start spooler

PS
Запускать с правами администратора.
Как, впрочем, надо было бы делать и при исходных извращениях. ;)

loviii
PPS
Или возможность печати на сетевой принтер должна сохраняться?

Iska
12-12-2018, 21:49
с предварительной очисткой очередей печати — если они есть: иначе возможны проблемы при последующей печати »
Я предпочитал наоборот — сначала остановка службы, затем удаление.

mwz
12-12-2018, 21:53
сначала остановка службы, затем удаление »

Разумеется — иначе удалить не получится. И здесь служба уже остановлена: первым батником. :)

Iska
12-12-2018, 22:07
mwz, прошу прощения — это я уже слепой, не то вижу :(.




© OSzone.net 2001-2012