Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск и копирование части строки из файла

Ответить
Настройки темы
CMD/BAT - Поиск и копирование части строки из файла

Аватара для slonax82

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день! Помогите разобраться, теоретически из файла должно браться только название используемого по умолчанию принтера , но возвращается только один знак из имени или пусто. Соответственно тк перенос имени не целый, далее не выполняется распечатка тест листа. В идеале если строка имеет вид "Device"="Samsung SCX-4200 Series,Samsung SCX-4200 Series,USB001" извлечь нужно только Samsung SCX-4200 Series (те до запятой- без номера порта). Заранее Спасибо откликнувшимся.


REG EXPORT "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows" "C:\print-scripts\test-R-print.txt" /y
pause

SetLocal EnableExtensions
set "file= C:\print-scripts\test-R-print.txt"
set "search= Device"
for /f "tokens=1 delims=[]" %%a in ('find /i /n "%search%" "%file%" ') do set "header_line=%%a"
if defined header_line (
more +%header_line% "%file%"
) >> "C:\print scripts\test-used-printer.txt"
pause
echo Used Printer= %%a:* >> "C:\print-scripts\test1-used-printer.txt"
pause

cscript "C:\Windows\SysWOW64\Printing_Admin_Scripts\ru-RU\prnqctl.vbs" -e -p "%%a"
pause

Отправлено: 20:50, 07-12-2021

 

Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
cls
	Set "Seek= Device "

	Set "header_line="
	For /f "tokens=2,* delims= " %%a In ('REG Query "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows" ^|Find /I " Device"') Do Set "header_line=%%b"
	For /f "delims=," %%a In ("%header_line%") Do Set "header_line=%%a"

Echo %header_line%
Pause
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 07-12-2021 в 23:05.

Это сообщение посчитали полезным следующие участники:

Отправлено: 22:57, 07-12-2021 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Аватара для slonax82

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Спасибо БОльшое.
Пока думал как получить искомую строку дошел до следующего-

cscript "C:\Windows\SysWOW64\Printing_Admin_Scripts\ru-RU\prnmngr.vbs" -g > "C:\print-scripts\test.txt"
pause
<"C:\print-scripts\test.txt">"C:\print-scripts\test2.txt" (find "ЏаЁ*вҐа Ї® 㬮«з**Ёо"|set /p z=^& call echo %%z:* =%%)
pause

Однако выводится имя в виде Ї® 㬮«з**Ёо Samsung SCX-4200 Series. Подскажите где ошибся? И как прикрутить ваш вариант или мой не рабочий к

cscript "C:\Windows\SysWOW64\Printing_Admin_Scripts\ru-RU\prnqctl.vbs" -e -p ИМЯ ПРИНТЕРА

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

Отправлено: 00:00, 08-12-2021 | #3


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Цитата slonax82:
cscript "C:\Windows\SysWOW64\Printing_Admin_Scripts\ru-RU\prnqctl.vbs" -e -p "%%a" »
Я не понимаю эту строку. %%a вне цикла не имеет смысла. Если Вы хотели, чтобы это было имя принтера, то (с моим вариантом)
Код: Выделить весь код
@Echo Off
cls
	Set "Seek= Device "

	Set "header_line="
	For /f "tokens=2,* delims= " %%a In ('REG Query "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows" ^|Find /I " Device"') Do Set "header_line=%%b"
	For /f "delims=," %%a In ("%header_line%") Do Set "header_line=%%a"

	cscript "C:\Windows\SysWOW64\Printing_Admin_Scripts\ru-RU\prnqctl.vbs" -e -p "%header_line%"
Pause
Exit /B
Но что при этом получится - не берусь судить, не зная, зачем этот скрипт и как используется.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 00:16, 08-12-2021 | #4


Аватара для slonax82

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Это системный скрипт для печати тестового листа Windows начиная с 98 и по 11. Последняя строка не может быть выполнена- возвращается с ошибкой(Буду думать как еще реализовать- тест лист). А по моему 2 варианту можете указать на ошибку- давно не приходилось писать, что то подобное- скорее всего со знаками %% перемудрил.

@echo .>C:\print-scripts\used-print.bat
@Echo Off
cls
Set "Seek= Device"
Set "header_line="
For /f "tokens=2,* delims= " %%a In ('REG Query "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows" ^|Find /I " Device"') Do Set "header_line=%%b"
For /f "delims=," %%a In ("%header_line%") Do Set "header_line=%%a"
Pause
Echo cscript "C:\Windows\SysWOW64\Printing_Admin_Scripts\ru-RU\prnqctl.vbs" -e -p "%header_line%">"C:\print-scripts\used-print.bat"
Echo Pause >>"C:\print-scripts\used-print.bat"
Pause
call "C:\print-scripts\used-print.bat"
Pause
Exit /B

Ваш вариант допилил- в результате получаем(Файл 165802)

Последний раз редактировалось slonax82, 08-12-2021 в 01:55.


Отправлено: 01:17, 08-12-2021 | #5


Аватара для slonax82

Новый участник


Сообщения: 4
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg Снимок1.JPG
(33.6 Kb, 2 просмотров)

Ваш вариант допилил-
@echo .>C:\print-scripts\used-print.bat
@Echo Off
cls
Set "Seek= Device"

Set "header_line="
For /f "tokens=2,* delims= " %%a In ('REG Query "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows" ^|Find /I " Device"') Do Set "header_line=%%b"
For /f "delims=," %%a In ("%header_line%") Do Set "header_line=%%a"
Echo cscript "C:\Windows\SysWOW64\Printing_Admin_Scripts\ru-RU\prnqctl.vbs" -e -p "%header_line%">"C:\print-scripts\used-print.bat"
Echo Pause >>"C:\print-scripts\used-print.bat"
call "C:\print-scripts\used-print.bat"
Pause
в результате получаем распечатку с искомого аппарата. Картинку поправляю https://disk.yandex.ru/client/disk?i...%BE%D0%BA1.JPG

PS Пока тему не закрываю- вдруг укажут на мои ошибки во втором варианте.

Последний раз редактировалось slonax82, 08-12-2021 в 09:47.


Отправлено: 09:12, 08-12-2021 | #6


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


slonax82, Не понимаю, зачем нужны выкрутасы с формированием еще одного батника. Попробуйте:
Код: Выделить весь код
@Echo Off
cls
	Set "Seek= Device "

	Set "header_line="
	For /f "tokens=2,* delims= " %%a In ('REG Query "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows" ^|Find /I " Device"') Do Set "header_line=%%b"
	For /f "delims=," %%a In ("%header_line%") Do Set "header_line=%%a"

	Start " " Wscript "C:\Windows\SysWOW64\Printing_Admin_Scripts\ru-RU\prnqctl.vbs" -e -p "%header_line%"
Exit /B

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:04, 08-12-2021 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск и копирование части строки из файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Копирование строки из файла в файл alexfeel30 Скриптовые языки администрирования Windows 10 05-06-2017 02:13
CMD/BAT - Копирование первой строки из файла MultiMax Скриптовые языки администрирования Windows 27 08-03-2017 14:14
CMD/BAT - [решено] Копирование первой и последней строки из файла Elven Скриптовые языки администрирования Windows 6 23-05-2014 19:55
CMD/BAT - Поиск и копирование нескольких строк из текстового файла. valen Скриптовые языки администрирования Windows 0 07-11-2011 17:27
VBS/WSH/JS - [решено] Поиск и копирование текста из файла KaKTuZ49 Скриптовые языки администрирования Windows 2 03-11-2011 13:38




 
Переход