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

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

Ответить
Настройки темы
CMD/BAT - [решено] Передача строк из исполняемого файла в текстовый.

Аватара для tr011_tmn

Ветеран


Автор проектов


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

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


Добрый день, столкнулся с такой проблемой:
Есть:
командный файл такого содержания:


echo off
cls
set t=%time% & echo Время начала
echo %t%
...
лирика с заданием переменных
...
Echo KB925398-v2
WindowsMedia6-KB925398-v2-x86-%LANG%.exe -x:%TP% /Q /N /Z
MOVE /Y WindowsMedia6-KB925398-v2-x86-%LANG%.exe %END%
...
echo работа закончена
:exit
set t1=%time%
echo %t1%
pause


Хотелось бы понять как передать из CMD в текстовый файл (желательно с его созданием из CMD) строки или строк:
KB925398-v2 и т.д.

-------
Насяльника!!!!! Джамшута адроннама коллайдер фключал, ключ павирнул и ашельбе машельбе асин, вульшарьбелеме!! и полный пистесама насяльника!
Цирк уехал ))) клоуны остались


Отправлено: 20:43, 04-03-2009

 

Аватара для gora

Ушёл из жизни


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

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


Если я правильно понял, то попробуйте так:
Код: Выделить весь код
...
Echo KB925398-v2>test.txt
Echo WindowsMedia6-KB925398-v2-x86-%LANG%.exe -x:%TP% /Q /N /Z>>test.txt
Echo MOVE /Y WindowsMedia6-KB925398-v2-x86-%LANG%.exe %END%>>test.txt
...
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:50, 04-03-2009 | #2



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

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


Аватара для tr011_tmn

Ветеран


Автор проектов


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

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


gora, если я вас правильно понял, то: >test.txt , это указание CMD занести в test.txt указанную строку.
А существует ли возможность не всю строку а только выборочную информацию занести в test.txt. например KB925398-v2 без echo, или например сформировать файл с определенным содержимым.
пробовал через copy /a con, но в данном случае его вручную необходимо завершать комбинацией ctrl+Z, и смысл атоматизации теряется. Или все такие есть способ внести строку KB925398-v2 и тому подобные в текстовый файл?

-------
Насяльника!!!!! Джамшута адроннама коллайдер фключал, ключ павирнул и ашельбе машельбе асин, вульшарьбелеме!! и полный пистесама насяльника!
Цирк уехал ))) клоуны остались


Отправлено: 21:07, 04-03-2009 | #3


Аватара для gora

Ушёл из жизни


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

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


Цитата tr011_tmn:
если я вас правильно понял, то: >test.txt , это указание CMD занести в test.txt указанную строку. »
Команда Echo KB925398-v2>test.txt заносит в файл test.txt только то что стоит после самой команды и до символа > (подчеркнуто). Один символ > , записывая строку в файл, создает его, а два символа >> только дописывают строку в уже созданный файл. Сама команда Echo в файл не попадает.
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:14, 04-03-2009 | #4


Аватара для tr011_tmn

Ветеран


Автор проектов


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

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


gora, вот теперь мозайка начала складываться более или менее, простите за еще один глупый вопрос. Получается что :

Код: Выделить весь код
Rem Начало файла >test.txt
Rem KB925398-v2 >>test.txt
Rem Конец файла >>test.txt
то на выходе я получу test.txt с содержимым:

Код: Выделить весь код
Начало файла
KB925398-v2 
Конец файла

-------
Насяльника!!!!! Джамшута адроннама коллайдер фключал, ключ павирнул и ашельбе машельбе асин, вульшарьбелеме!! и полный пистесама насяльника!
Цирк уехал ))) клоуны остались


Отправлено: 21:28, 04-03-2009 | #5


Аватара для gora

Ушёл из жизни


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

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


Цитата tr011_tmn:
то на выходе я получу test.txt с содержимым: »
Нет! Не Rem должно быть, а Echo.
Код: Выделить весь код
Echo Начало файла>test.txt
Echo KB925398-v2>>test.txt
Echo Конец файла>>test.txt
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:56, 04-03-2009 | #6


Аватара для tr011_tmn

Ветеран


Автор проектов


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

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


gora, теперь общий смысл понял, еще раз вам огромное спасибо

-------
Насяльника!!!!! Джамшута адроннама коллайдер фключал, ключ павирнул и ашельбе машельбе асин, вульшарьбелеме!! и полный пистесама насяльника!
Цирк уехал ))) клоуны остались


Отправлено: 22:02, 04-03-2009 | #7


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


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

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


А как при этом оставить вывод в окне командной строки? Смотрел множество ресурсов - так и не разобрался. Получается, что echo выводит либо в файл, либо в окно. Как сделать "перенаправление", чтобы шло и туда и туда? Заранее спасибо.

Отправлено: 17:48, 29-05-2009 | #8


Ветеран


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

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


Цитата LuSP:
А как при этом оставить вывод в окне командной строки? Смотрел множество ресурсов - так и не разобрался. Получается, что echo выводит либо в файл, либо в окно. Как сделать "перенаправление", чтобы шло и туда и туда? »
Писать две команды «echo», одну на вывод на консоль, другую — в файл.
Либо оформить подобный вывод в виде простой процедуры:
читать дальше »
Код: Выделить весь код
@echo off
setlocal enableextensions enabledelayedexpansion

set strFileName=Test.txt

call :LikeTee "Hello World" "%strFileName%"
call :LikeTee "Привет мир" "%strFileName%"
call :LikeTee "Hello World2"
call :LikeTee

endlocal
exit /b 0
rem ==========================================================================

rem ==========================================================================
:LikeTee
    setlocal enableextensions enabledelayedexpansion
    
    if "%~1"=="" (
        goto :eof
    ) else (
        echo %~1
        
        if "%~2"=="" (
            goto :eof
        ) else (
            echo %~1>>"%~2"
        )
    )
    
    endlocal
    exit /b 0
rem ==========================================================================

Либо использовать для этих целей утилиту tee, например, из комплекта Native Win32 ports of some GNU utilities:
Код: Выделить весь код
echo Hello World|tee.exe test.txt

Отправлено: 19:50, 29-05-2009 | #9


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


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

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


Iska, спасибо. К сожалению, ничего из предложенного вами мне не подходит.
Мне нужен вывод команды, а не простой текст. В случае с повтором echo придётся повторять команду, эффект от LikeTee тот же (или всё-таки можно использовать? Тогда как делать call?), саму tee ставить не вариант (планируется использование скрипта не только на своей машине).
Много чего пробовал из следующего - вообще не работает.
читать дальше »
Операторы перенаправления команд используются для изменения местоположений потоков ввода и вывода команд, заданных по умолчанию, на какие-либо другие. Местоположение потоков ввода и вывода называется дескриптор.

В следующей таблице описаны операторы перенаправления потоков ввода и вывода команд.

Оператор перенаправления


Описание

>


Записывает данные на выходе команды вместо командной строки в файл или на устройство, например, на принтер.

<


Читает поток входных данных команды из файла, а не с клавиатуры.

>>


Добавляет выходные данные команды в конец файла, не удаляя при этом существующей информации из файла.

>&


Считывает данные на выходе одного дескриптора как входные данные для другого дескриптора.

<&


Считывает входные данные одного дескриптора как выходные данные другого дескриптора.

|


Считывает выходные данные одной команды и записывает их на вход другой команды. Эта процедура известна под названием «канал».

По умолчанию, входные данные команды (дескриптор STDIN) отсылаются с клавиатуры интерпретатору команд Cmd.exe, далее Cmd.exe отправляет выходные данные команды (дескриптор STDOUT) в окно командной строки.

В следующей таблице представлены доступные дескрипторы.

дескриптор


Числовой эквивалент дескриптора


Описание

STDIN


0


Ввод с клавиатуры

STDOUT


1


Вывод в окно командной строки

STDERR


2


Ошибка вывода в окно командной строки

UNDEFINED


3-9


Эти дескрипторы определяются индивидуально для каждой прикладной программы.

Номера от 0 до 9 представляют первые 10 дескрипторов. Для запуска программы и перенаправления любого из 10 дескрипторов используется интерпретатор команд Cmd.exe. Для задания требуемого дескриптора перед оператором перенаправления введите его номер. Если дескриптор не определен, то по умолчанию оператором перенаправления ввода «<» будет ноль (0), а оператором перенаправления вывода «>» будет единица (1). После ввода оператора «<» или «>» необходимо указать, откуда читать и куда записывать данные. Можно задать имя файла или любой из существующих дескрипторов.

Для задания перенаправления в существующие дескрипторы используется амперсанд (&), затем номер требуемого дескриптора (например, &номер_дескриптора). Например, для перенаправления дескриптора 2 (STDERR) в дескриптор 1 (STDOUT) введите:

1<&2
Дублирование дескрипторов

Оператор перенаправления «&» дублирует выходные или входные данные с одного заданного дескриптора на другой заданный дескриптор. Например, для отправки выводных данных команды dir в файл File.txt и отправки ошибки вывода в файл File.txt введите:

dir>c:\file.txt 2>&1

При дублировании дескриптора происходит копирование всех его исходных характеристик. Например, если дескриптор доступен только для записи, то все его дубликаты будут доступны только для записи. Нельзя продублировать дескриптор с доступом только для чтения в дескриптор с доступом только для записи.
Перенаправление ввода команд (<)

Для перенаправления ввода команд с цифровой клавиатуры на файл или на устройство используйте оператор «<». Например, для ввода команды sort из файла List.txt введите:

sort<file.txt

Содержимое файла File.txt появится в командной строке в виде списка в алфавитном порядке.

Оператор «<» открывает заданное имя файла с доступом только для чтения. Поэтому с его помощью нельзя записывать в файл. Например, при запуске программы с оператором <&2 все попытки прочитать дескриптор 0 ни к чему не приведут, так как изначально он был открыт с доступом только для записи.

Примечание

* Дескриптор 0 задан по умолчанию для оператора перенаправления ввода «<».

Перенаправление вывода команд (>)

Выходные данные практически всех команд высвечиваются в окне командной строки. Даже команды, выводящие данные на диск или принтер, выдают сообщения и запросы в окне командной строки.

Для перенаправления вывода команд из окна командной строки в файл или на устройство применяется оператор «>». Этот оператор используется с большинством команд. Например, для перенаправления вывода команды dir в файл Dirlist.txt введите:

dir>dirlist.txt

Если файл Dirlist.txt не существует, интерпретатор команд Cmd.exe создаст его. Если файл существует, Cmd.exe заменит информацию в файле на данные, полученные от команды dir.

Для запуска команды netsh routing dump и последующей отправки результатов ее работы в Route.cfg введите:

netsh routing dump>c:\route.cfg

Оператор «>» открывает заданный файл с доступом только для записи. Поэтому с помощью данного оператора файл прочитать нельзя. Например, при запуске программы с оператором перенаправления <&0 все попытки записать дескриптор 1 ни к чему не приведут, так как изначально дескриптор 0 был открыт с доступом только для чтения.

Примечание.

* Дескриптор 1 задан по умолчанию для оператора перенаправления вывода «>».

Использование оператора «<&» для перенаправления ввода и дублирования

Для использования оператора перенаправления ввода необходимо, чтобы задаваемый файл уже существовал. Если файл для ввода существует, то интерпретатор команд Cmd.exe открывает его с доступом только для чтения и его содержимое отправляет в команду так, как если бы это был ввод с цифровой клавиатуры. При задании дескриптора интерпретатор команд Cmd.exe дублирует его в дескриптор, существующий в системе.

Например, для считывания файла File.txt на вход в дескриптор 0 (STDIN) введите:

<file.txt

Для открытия файла File.txt, сортировки его содержимого и последующей отправки в окно командной строки (STDOUT) введите:

sort<file.txt

Для того чтобы найти файл File.txt и перенаправить дескриптор 1 (STDOUT) и дескриптор 2 (STDERR) в Search.txt введите:

findfile file.txt>search.txt 2<&1

Для дублирования определенного пользователем дескриптора 3 в качестве входной информации для дескриптора 0 (STDIN) введите:

<&3
Использование оператора «>&» для перенаправления ввода и дублирования

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

Для дублирования определенного пользователем дескриптора 3 в дескриптор 1 введите:

>&3

Для перенаправления всех выходных данных, включая выходные данные дескриптора 2 (STDERR), команды ipconfig в дескриптор 1 (STDOUT) и последующего перенаправления выходных данных в Output.log введите:

ipconfig.exe>>output.log 2>&1
Использование оператора «>>» для добавления вывода

Для добавления выходных данных команды в конец файла без потери хранящейся в нем информации используется двойной символ «больше» (>>). Например, следующая команда добавляет список каталогов, созданный командой dir, в файл Dirlist.txt:

dir>>dirlist.txt

Для добавления выходных данных команды netstat в конец файла Tcpinfo.txt введите:

netstat>>tcpinfo.txt
Использование оператора канала (|)

Оператор канала «вертикальная линия» (|) забирает выходные данные одной команды (по умолчанию STDOUT) и направляет их на вход другой команды (по умолчанию STDIN). Например, следующая команда сортирует каталог:

dir | sort

В данном примере обе команды запускаются одновременно, но команда sort приостанавливает работу до получения выходных данных команды dir. Команда sort использует выходные данные команды dir в качестве своих входных данных, а затем свои выходные данные отправляет в дескриптор 1 (STDOUT).
Комбинирование команд с операторами перенаправления

Комбинируя команды-фильтры с другими командами и именами файлов, можно создавать команды на заказ. Например, для сохранения имен файлов, содержащих строку «LOG», используется следующая команда:

dir /b | find "LOG" > loglist.txt

Выход команды dir отсылается в команду-фильтр find. Имена файлов, содержащие строку «LOG», хранятся в файле Loglist.txt в виде списка (например, NetshConfig.log, Logdat.svd и Mylog.bat).

При использовании более одного фильтра в одной команде их необходимо отделять с помощью канала (|). Например, следующая команда ищет в каждом каталоге диска C файлы, в названии которых присутствует строка «Log», и выводит их постранично на экран:

dir c:\ /s /b | find "LOG" | more

Наличие канала (|) указывает Cmd.exe, что выход команды dir нужно отправить команде-фильтру find. Команда find выбирает только те имена файлов, в которых содержится строка «LOG». Команда more выводит на экран имена файлов, полученные командой find с паузой после заполнения каждого экрана.

Отправлено: 21:06, 29-05-2009 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Приоритет для исполняемого файла Seven Microsoft Windows NT/2000/2003 1 15-01-2010 12:25
[решено] PHP|Передача файла браузеру morgan1991 Вебмастеру 1 09-12-2009 20:44
Интерфейс - Как посмотреть версию исполняемого файла с произвольным расширением Vic21 Microsoft Windows 7 2 16-11-2009 15:12
[решено] Вывод строк из файла чата (рег. выражение?) | PHP D_Master Вебмастеру 5 13-04-2009 19:12
Текстовый редактор с верт. блоком и нумерацией строк Foma Программное обеспечение Windows 1 14-01-2008 10:08




 
Переход