![]() |
Поиск и копирование части строки из файла
Добрый день! Помогите разобраться, теоретически из файла должно браться только название используемого по умолчанию принтера , но возвращается только один знак из имени или пусто. Соответственно тк перенос имени не целый, далее не выполняется распечатка тест листа. В идеале если строка имеет вид "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 |
Код:
@Echo Off |
Спасибо БОльшое.
Пока думал как получить искомую строку дошел до следующего- 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 ИМЯ ПРИНТЕРА Заранее Спасибо |
Цитата:
Код:
@Echo Off |
Это системный скрипт для печати тестового листа 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) |
Вложений: 1
Ваш вариант допилил-
@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, Не понимаю, зачем нужны выкрутасы с формированием еще одного батника. Попробуйте:
Код:
@Echo Off |
Время: 13:45. |
Время: 13:45.
© OSzone.net 2001-