Отсутствует спецификация файла после оператора перенаправления

Обновлено: 05.07.2024

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

Хотя есть несколько операторов перенаправления, о которых вы можете подробно прочитать здесь , в частности, два используются для вывода результатов команды в файл: знак «больше», > и знак «больше», >> .

Как использовать операторы перенаправления

Самый простой способ научиться использовать эти операторы перенаправления — это посмотреть несколько примеров:

В этом примере вся информация о конфигурации сети, обычно отображаемая на экране после запуска ipconfig / all , сохраняется в файл с именем mynetworksettings.txt . Он хранится в папке слева от команды, в данном случае C: \ Users \ jonfi .

Оператор перенаправления > находится между командой ipconfig и именем файла. Если файл уже существует, он будет перезаписан. Если он еще не существует, он будет создан.

Хотя файл будет создан, если он еще не существует, папок не будет. Чтобы сохранить вывод команды в файл в определенной папке, которая еще не существует, сначала создайте папку, а затем выполните команду. Создавайте папки, не выходя из командной строки с помощью команды mkdir .

Здесь при выполнении команды ping командная строка выводит результаты в файл с именем Ping Results.txt, расположенный на рабочем столе пользователя jonfi , который находится по адресу C: \ Users \ jonfi \ Desktop . Весь путь к файлу заключен в кавычки, потому что там был пробел.

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

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

Оператор двойной стрелки добавляет, а не заменяет файл:

Снимок экрана, показывающий, как использовать командную строку для добавления результатов ipconfig в существующий файл

В этом примере используется оператор перенаправления >>, который работает почти так же, как оператор > , но вместо перезаписи выходного файла, если он существует, он добавляет вывод команды в конец файла.

Вот пример того, как может выглядеть этот файл LOG после экспорта в него команды:

Снимок экрана файла журнала с записанными в него командами

Оператор перенаправления >> полезен, когда вы собираете похожую информацию с разных компьютеров или команд и хотите, чтобы все эти данные были в одном файле.

Приведенные выше примеры операторов перенаправления находятся в контексте командной строки, но вы также можете использовать их в файле BAT . Когда вы используете BAT-файл для передачи вывода команды в текстовый файл, используются те же самые команды, описанные выше, но вместо нажатия Enter для их запуска вам просто нужно открыть .BAT-файл.

Используйте операторы перенаправления в пакетных файлах

Операторы перенаправления работают в пакетных файлах, включая команду так же, как в командной строке:

команда tracert BAT с оператором перенаправления

Выше приведен пример того, как создать пакетный файл, который использует оператор перенаправления с командой tracert .

Помогите пожалуйста решить этот вопрос.
Искал готовые батник чтобы вставить свой путь файла и нужные слова но не я тупо не смог разобраться куда вставлять.
Заранее огромное спасибо за ответ!

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Поиск определенного слова в текстовом файле
Здравствуйте. Мне надо решить следующую задачу: Дан текстовый файл с несколькими строками. Найти.

Батник для изменения определенного параметра в файле
Опыта работы с батниками вообще не было, много подобных тем уже есть, но все равно ничего не.

Необходимо сделать батник для замены тега в xml файле
Доброго времени! Проблема такая, есть папка в которой много xml файлов с разными названиями нужно.


Hаписать пpогpамму поиска и замены введенного с клавиатуры слова на другое той же длины в текстовом файле
3. Hаписать пpогpамму поиска и замены введенного с клавиатуры слова на другое той же длины в.

Решение

alpap, Спасибо за щедрую подборку)) В первом же варианте попробовал вставить свои значения

Было
twiter
email
eth

Стало
twiter

eth=
="C:\Users\37533\Desktop\macro\batnik1frank.bat"x78d4F0212CC e00c0b321c99C0a763F42f7cF9966
=

Подскажите пожалуйста что я делаю не так?

Добавлено через 51 минуту


Добавлено через 3 минуты
В 3 варианте через Powershell получилось. Но как только начал зацикливать команды что-то идёт не так

Результат
строка:1 знак:26
+ (Get-Content macros.txt).
+


Отсутствует имя свойства после оператора ссылки.
строка:2 знак:3
+ >> >> replace('twiter', '@twi2').
+


Отсутствует спецификация файла после оператора перенаправления.
строка:2 знак:4
+ >> >> replace('twiter', '@twi2').
+


выходной поток для этой команды уже перенаправлен.
строка:2 знак:14
+ >> >> replace('twiter', '@twi2').
+


Непредвиденная лексема "(" в выражении или операторе.
строка:2 знак:34
+ >> >> replace('twiter', '@twi2').
+


Отсутствует имя свойства после оператора ссылки.
строка:3 знак:3
+ >> >> replace('email', 'ema2@by').
+


Отсутствует спецификация файла после оператора перенаправления.
строка:3 знак:4
+ >> >> replace('email', 'ema2@by').
+


выходной поток для этой команды уже перенаправлен.
строка:3 знак:14
+ >> >> replace('email', 'ema2@by').
+


Непредвиденная лексема "(" в выражении или операторе.
строка:3 знак:39
+ >> >> replace('email', 'ema2@by').
+


Отсутствует имя свойства после оператора ссылки.
строка:4 знак:3
+ >> >> replace('eth', '0x78d4F0212CCe00c0b321c99bbbbbbbbb222966').
+

Решение

Выдаёт список ошибок
строка:1 знак:26
+ (Get-Content macros.txt).
+


Отсутствует имя свойства после оператора ссылки.
строка:2 знак:3
+ >> >> replace('twiter', '@twi2').
+


Отсутствует спецификация файла после оператора перенаправления.
строка:2 знак:4
+ >> >> replace('twiter', '@twi2').
+


выходной поток для этой команды уже перенаправлен.
строка:2 знак:14
+ >> >> replace('twiter', '@twi2').
+


Непредвиденная лексема "(" в выражении или операторе.
строка:2 знак:34
+ >> >> replace('twiter', '@twi2').
+


Отсутствует имя свойства после оператора ссылки.
строка:3 знак:3
+ >> >> replace('email', 'ema2@by').
+


Отсутствует спецификация файла после оператора перенаправления.
строка:3 знак:4
+ >> >> replace('email', 'ema2@by').
+


выходной поток для этой команды уже перенаправлен.
строка:3 знак:14
+ >> >> replace('email', 'ema2@by').
+


Непредвиденная лексема "(" в выражении или операторе.
строка:3 знак:39
+ >> >> replace('email', 'ema2@by').
+


Отсутствует имя свойства после оператора ссылки.
строка:4 знак:3
+ >> >> replace('eth', '0x78d4F0212CCe00c0b321c99bbbbbbbbb222966').
+

Добавлено через 1 минуту
Спасибо за ответ! Но я вообще нечего не понял.
Сделал файл но ошибки остались

Объясняется, как перенаправлять выходные данные из PowerShell в текстовые файлы.

Подробное описание

Для перенаправления выходных данных можно использовать следующие методы:

Используйте Out-File командлет, который отправляет выходные данные команды в текстовый файл. Как правило, командлет используется, Out-File когда необходимо использовать параметры, такие как Encoding ,, Force Width или NoClobber .

Используйте Tee-Object командлет, который отправляет выходные данные команды в текстовый файл и отправляет его в конвейер.

Используйте операторы перенаправления PowerShell. Использование оператора перенаправления с целевым объектом файла функционально эквивалентно конвейеру Out-File без дополнительных параметров.

Дополнительные сведения о потоках см. в разделе about_Output_Streams.

Перенаправляемые выходные потоки

PowerShell поддерживает перенаправление следующих выходных потоков.

В PowerShell также присутствует поток хода выполнения , но он не поддерживает перенаправление.

Потоки успехов и ошибок похожи на потоки stdout и stderr других оболочек. Однако stdin не подключен к конвейеру PowerShell для ввода данных.

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

Ниже приведены операторы перенаправления PowerShell, где n представляет номер потока. Если поток не указан, по умолчанию используется поток Success ( 1 ).

Примеры

Пример 1. ошибки перенаправления и выходные данные в файл

Этот пример выполняется dir на одном элементе, который будет выполнен, и один из которых будет иметь ошибку.

Он использует 2>&1 для перенаправления потока ошибок в поток успешного выполнения и > отправки результирующего потока успешного выполнения в файл с именем. dir.log

Пример 2. Отправка всех успешных данных потока в файл

В этом примере все успешные потоковые данные отправляются в файл с именем script.log .

Пример 3. Передача в файл успешных, предупреждающих и ошибочных потоков

В этом примере показано, как можно комбинировать операторы перенаправления для достижения желаемого результата.

  • 3>&1 перенаправляет поток предупреждений в поток успешного выполнения .
  • 2>&1 перенаправляет поток ошибок в поток успешного выполнения (который также включает все данные потока предупреждений ).
  • > перенаправляет поток успешного выполнения (который теперь содержит потоки предупреждений и ошибок ) в файл с именем C:\temp\redirection.log ).

Пример 4. перенаправление всех потоков в файл

Этот пример отправляет все выходные данные из скрипта, вызываемого script.ps1 в файл с именем script.log

Пример 5. Отключение всех данных Write-Host и информационных потоков

В этом примере подавляются все данные потока информации. Дополнительные сведения о командлетах информационного потока см. в статье Write-Host и Write-Information .

Пример 6. Отображение влияния настроек действий

Переменные и параметры настройки действия могут изменять содержимое, записываемое в определенный поток. Скрипт в этом примере показывает, как значение влияет на то, $ErrorActionPreference что записывается в поток ошибок .

При выполнении этого скрипта выводится запрос, когда $ErrorActionPreference для параметра задано значение Inquire .

При изучении файла журнала мы увидим следующее:

Примечания

Операторы перенаправления, которые не добавляют данные ( > и n> ) перезаписывают текущее содержимое указанного файла без предупреждения.

Однако если файл доступен только для чтения, является скрытым или системным файлом, перенаправление завершается ошибкой. Операторы добавления перенаправления ( >> и n>> ) не записывают в файл, доступный только для чтения, но добавляют содержимое в системный или скрытый файл.

Для принудительного перенаправления содержимого в скрытый или системный файл только для чтения используйте Out-File командлет со своим Force параметром.

При записи в файлы операторы перенаправления используют UTF8NoBOM кодировку. Если файл имеет другую кодировку, выходные данные могут быть неправильно отформатированы. Для записи в файлы с другой кодировкой используйте Out-File командлет с его Encoding параметром.

Ширина выходных данных при записи в файл

При записи в файл с помощью Out-File или операторов перенаправления PowerShell преобразует выходные данные таблицы в файл на основе ширины консоли, в которой она выполняется. Например, при записи выходных данных таблицы в файл с помощью команды, например Get-ChildItem Env:\Path > path.log в системе, в которой ширина консоли равна 80 столбцам, выходные данные в файле усекаются до 80 символов:

Учитывая, что ширина консоли может быть задана произвольным образом на системах, где выполняется сценарий, вы можете предпочесть, чтобы формат PowerShell был выводить файлы таблицы в соответствии с заданной заданной шириной.

Out-File Командлет предоставляет параметр Width , позволяющий задать ширину для вывода в таблицу. Вместо того, чтобы добавлять -Width 2000 все при вызове Out-File , можно использовать $PSDefaultParameterValues переменную, чтобы задать это значение для всех использований Out-File командлета в скрипте. А поскольку операторы перенаправления ( > и >> ) фактически являются псевдонимами для Out-File , установка Out-File:Width параметра для всего скрипта влияет также на ширину форматирования для операторов перенаправления. Добавьте следующую команду в начало скрипта, чтобы задать Out-File:Width для всего скрипта:

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

В некоторых случаях, например Get-Service в выходных данных, чтобы использовать дополнительную ширину, необходимо передать выходные данные перед выводом Format-Table -AutoSize в файл.

Дополнительные сведения о $PSDefaultParameterValues см. в разделе about_Preference_Variables.

Потенциальная путаница с операторами сравнения

> Оператор не следует путать с оператором сравнения " больше " (часто обозначается как > в других языках программирования).

В зависимости от сравниваемых объектов выходные данные > могут выглядеть правильными (поскольку 36 не превышает 42).

Однако проверка локальной файловой системы может видеть, что файл 42 с именем был записан с содержимым 36 .

Попытка использовать обратные сравнения < (меньше) приводит к системной ошибке:

Значение, если числовое сравнение является обязательной операцией -lt и -gt должно использоваться. Дополнительные сведения см. в описании -gt оператора в about_Comparison_Operators.

Использование операторов перенаправления команд

Операторы перенаправления команд используются для изменения местоположений потоков ввода и вывода команд, заданных по умолчанию, на какие-либо другие. Местоположение потоков ввода и вывода называется дескриптор.

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

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

Оператор перенаправления Описание
> Записывает данные на выходе команды вместо командной строки в файл или на устройство, например, на принтер.
< Читает поток входных данных команды из файла, а не с клавиатуры.
>> Добавляет выходные данные команды в конец файла, не удаляя при этом существующей информации из файла.
>& Считывает данные на выходе одного дескриптора как входные данные для другого дескриптора.
<& Считывает входные данные одного дескриптора как выходные данные другого дескриптора.
| Считывает выходные данные одной команды и записывает их на вход другой команды. Эта процедура известна под названием «канал».

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

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

Дескриптор Числовой эквивалент дескриптора Описание
STDIN 0 Ввод с клавиатуры
STDOUT 1 Вывод в окно командной строки
STDERR 2 Ошибка вывода в окно командной строки
UNDEFINED 3-9 Эти дескрипторы определяются индивидуально для каждой прикладной программы.

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

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

Использование операторов перенаправления

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Использование оператора канала (|)

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

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

Комбинирование команд с операторами перенаправления

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

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

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

Читайте также: