|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Поиск и копирование части строки из файла |
|
CMD/BAT - Поиск и копирование части строки из файла
|
Новый участник Сообщения: 4 |
Профиль | Отправить 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 |
Ветеран Сообщения: 2708
|
Профиль | Отправить 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 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 4
|
Профиль | Отправить 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 |
Ветеран Сообщения: 2708
|
Профиль | Отправить 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" cscript "C:\Windows\SysWOW64\Printing_Admin_Scripts\ru-RU\prnqctl.vbs" -e -p "%header_line%" Pause Exit /B |
|
------- Отправлено: 00:16, 08-12-2021 | #4 |
Новый участник Сообщения: 4
|
Профиль | Отправить 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 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Ваш вариант допилил-
@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 |
Ветеран Сообщения: 2708
|
Профиль | Отправить 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 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|