Добрый день! Помогите разобраться, теоретически из файла должно браться только название используемого по умолчанию принтера , но возвращается только один знак из имени или пусто. Соответственно тк перенос имени не целый, далее не выполняется распечатка тест листа. В идеале если строка имеет вид "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
CMD/BAT - Поиск и копирование части строки из файла
-
megaloman
Re: CMD/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 %header_line%
Pause
Exit /B-
slonax82
Re: CMD/BAT - Поиск и копирование части строки из файла
Спасибо БОльшое.
Пока думал как получить искомую строку дошел до следующего-
cscript "C:\Windows\SysWOW64\Printing_Admin_Scripts\ru-RU\prnmngr.vbs" -g > "C:\print-scripts\test.txt"
pause
"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 ИМЯ ПРИНТЕРА
Заранее Спасибо
Пока думал как получить искомую строку дошел до следующего-
cscript "C:\Windows\SysWOW64\Printing_Admin_Scripts\ru-RU\prnmngr.vbs" -g > "C:\print-scripts\test.txt"
pause
"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 ИМЯ ПРИНТЕРА
Заранее Спасибо
-
megaloman
Re: CMD/BAT - Поиск и копирование части строки из файла
Цитата slonax82:
cscript "C:\Windows\SysWOW64\Printing_Admin_Scripts\ru-RU\prnqctl.vbs" -e -p "%%a"
Я не понимаю эту строку. %%a вне цикла не имеет смысла. Если Вы хотели, чтобы это было имя принтера, то (с моим вариантом)
Код:
Но что при этом получится - не берусь судить, не зная, зачем этот скрипт и как используется.
cscript "C:\Windows\SysWOW64\Printing_Admin_Scripts\ru-RU\prnqctl.vbs" -e -p "%%a"
CMD/BAT - Поиск и копирование части строки из файла
Я не понимаю эту строку. %%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Но что при этом получится - не берусь судить, не зная, зачем этот скрипт и как используется.
-
slonax82
Re: CMD/BAT - Поиск и копирование части строки из файла
Это системный скрипт для печати тестового листа 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
Ваш вариант допилил- в результате получаем(
@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
Re: CMD/BAT - Поиск и копирование части строки из файла
Ваш вариант допилил-
@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
в результате получаем распечатку с искомого аппарата. Картинку поправляю
PS Пока тему не закрываю- вдруг укажут на мои ошибки во втором варианте.
@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 Пока тему не закрываю- вдруг укажут на мои ошибки во втором варианте.
- Вложения
-
megaloman
Re: CMD/BAT - Поиск и копирование части строки из файла
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