Я запускаю приложение в командной строке или в оболочке Git , и я хотел бы получить вывод в Блокнот, чтобы потом было легче просматривать и редактировать.
Я попробовал следующее, но я всегда получаю пустой экземпляр Блокнота:
diff file1.txt file2.txt | notepad
Я знаю, что могу перенаправить вывод в другой файл, а затем открыть файл в блокноте. Я хотел бы избежать дополнительного шага, потому что я просто привык использовать Vim или менее в системах, отличных от Windows.
windows
command-line
notepad
Der Hochstapler
источник
источник
more
Windows.vim
, почему бы просто не установить его?Ответы:
Из того, что я могу сказать, нет никакого способа напрямую передать в Блокнот.
Тем не менее, вы можете вставить
clip
и затем вставить в блокнот, например, так:Затем просто нажмите Ctrl+ Vв блокноте.
источник
&& notepad file3.txt
?Подумайте об использовании Vim или, в вашем случае, gVim, если вы предпочитаете графическое окружение.
Затем вы можете передать в него один дефис в качестве аргумента, который указывает Vim / gVim читать из стандартного ввода.
источник
:%!diff file1.txt file2.txt
-
часто используется для обозначения «читать из стандартного ввода», поэтому это не ограничиваетсяvim
. Другие редакторы используют-i
(напримерkate
).Вот небольшая программа для Windows, которая делает это правильно (без зазубрин буфера обмена). Он должен быть адаптирован к PowerShell, и я мог бы обновить этот ответ, если у меня будет время, но вы также можете просто использовать эту программу напрямую.
Ну, а как насчет PowerShell? Не нужно устанавливать другое приложение. К сожалению, вам будет нужно создать файл сценария в своем
PATH
...Короткая версия, которую вы можете использовать
Если вы создадите командный файл (например
ShowInNotepad.bat
) со следующим содержимым и поместите его в своеPATH
место:Вы можете просто позвонить
echo blah | ShowInNotepad
из любой точки мира!Обратите внимание , что это действительно предположить , что вы используете последнюю иш версию Windows (Vista +) и не отключили PowerShell или деинсталлировать рамки .NET. Другими словами, установка Windows по умолчанию будет работать.
Длительное объяснение и альтернативы
Самый простой способ, который я могу придумать, - это автоматизировать действие вставки ( Ctrl+ V). Что, по крайней мере, еще один ответ уже делает, но тот, который использует AHK - вам, возможно, повезет, если заставить PowerShell работать в закрытой корпоративной среде.
Давайте продолжим со сценарием, да?
Это довольно просто, поэтому я не буду объяснять сценарий больше, чем комментарии.
использование
Чтобы использовать его, вам просто нужно поместить скрипт в
.ps1
файл (напримерShowInNotepad.ps1
), поместить его где-то в вашемPATH
и затем вызватьpowershell ShowInNotepad.ps1
после размещения текста, который вы хотите отобразить в буфере обмена.Пример:
К сожалению, выполнение сценариев PowerShell иногда может быть затруднено (политики выполнения и все). Поэтому я сжал этот скрипт до одной строки, которую вы можете вызвать напрямую из командной строки или даже поместить в командный файл:
Если вы создадите командный файл (например
ShowInNotepad.bat
) со следующим содержимым и поместите его в своеPATH
место:Вы можете просто позвонить
echo blah | ShowInNotepad
из любой точки мира!источник
Save
выход и изменение измененного поведения отличаются. Если не считать замены самого Блокнота или непосредственной вставки текста в его элемент управления для редактирования, других вариантов не так много. Конечно, у этого метода есть недостаток, заключающийся в том, что содержимое буфера обмена забивается (хотя в любом случае оно должно быть эфемерным). Я не думаю, что потеря внимания является серьезной проблемой; это ...ShowWindow
и отправкой нажатий клавиш). И этот метод требует немного больше настройки (создание файла скрипта), да.Как насчет использования AutoHotkey ?
Сохраните следующее как
stdin.ahk
и поместите его в каталог AutoHotkey:Тогда командная строка:
Передает вывод команды в Блокнот, пока окно открыто и озаглавлено
Untitled - Notepad
. Если окно не активно, оно будет активно буферизоваться в фоновом режиме до тех пор, пока окно не станет активным. Вы даже можете перейти к другой программе, и она снова будет выполнять буферизацию.Это, кажется, умирает, когда программа, выводящая на наш стандартный ввод, умирает ...
(Для информации, код stdin () был бесстыдно отсюда полдюйма )
источник
Это вполне возможно; Я только что попробовал это. Я предполагаю, что Блокнот по умолчанию настроен на открытие текстовых файлов:
Хорошо, вы технически создаете файл, но он не сохраняется.
Трубить больше - это тоже вариант.
источник
output.txt
это загубит его. Предельно безопаснее было бы использовать%temp%/somerandomstring.txt
.Вот уродливый, но эффективный способ сделать это:
Только обязательно отправляйте только текстовые сообщения. Другие данные могут быть интерпретированы как управляющие символы (CTRL, ALT, DEL и т. Д.).
источник
Вот пара решений на основе VBScript, которые могут работать (хотя ... они полагаются на приложения, которые открываются вовремя):
pipe2key.vbs - открывает приложение, указанное в качестве первого аргумента, а затем отправляет StdIn как нажатия клавиш. Необходимо использовать с cscript.exe, так как wscript не обеспечивает доступ к StdIn. Вероятно, довольно медленно для длинных документов - но не будет загромождать буфер обмена
Пример использования:
diff file1.txt file2.txt | cscript pipe2key.vbs notepad.exe
Или pasteinto.vbs. Автоматизирует операцию CTRL-V после запуска приложения (таким образом, используется команда «clip», как упоминалось в предыдущих ответах). Значительно быстрее и чище (на мой взгляд), чем pipe2key.vbs, но процесс перезапишет буфер обмена
Пример использования:
diff file1.txt file2.txt | clip && pasteinto notepad.exe
источник
Нечто подобное "может" работать.
О, ты не понимал, что это то, что ты будешь делать каждый раз вручную (по звукам этого). Возможно, вам удастся создать какой-то макрос или что-то подобное, чтобы ускорить процесс. Не уверен в этом.
diff file1.txt file2.txt > file.txt | sleep 1 | notepad.exe file.txt | rm file.txt
Это должно было бы закончить запись содержимого diff в файл file.txt, чтобы загрузить всю операцию diff, что я не уверен, будет ли это выполнено. В таком случае может быть способ сделать паузу между операциями канала.
источник
&
,&&
И||
операторы в цепи команд вместе. Все 3 ведут себя по-разному, если они генерируют возвращаемое значение, отличное от 0.|
совершенно иной , как она используется для труб выхода из одной программы в другую. Результатом может быть то, что вы хотели, но использование одного из операторов цепочки делает намерение более ясным, потому что в этом примере не требуется фактический конвейер. Для дополнительной справки: microsoft.com/resources/documentation/windows/xp/all/proddocs/…Мой язык не английский, так что извините за ошибки.
Я думаю, что вы не можете напрямую поместить вывод в открытый блокнот. Может быть, я ошибаюсь по этому поводу. Вы должны создать файл с выводом, чтобы работать с ним. Команда tee может передать вывод двум или может быть несколькими командами или файлами одновременно.
человек тройник
Не забудьте использовать >> вместо> при перенаправлении вывода в файл. > Перезапишет файл, >> добавит вывод после того, что уже есть в этом файле.
источник
tee
обычно недоступен в Windows, и даже если бы он был, это не помогло бы решить эту проблему.Вы не можете, Блокнот слишком ограничен для этого! А еще лучше ... установить Cygwin и обойти все это "отсутствие функций" Windows. Затем вы можете использовать команду, которую вы уже знаете.
AFAIK, очень немногие программы для Windows поддерживают конвейерную обработку, еще хуже для программ с графическим интерфейсом.
Вы можете попытаться открыть запросы функций в одной из программ «хвоста Windows», чтобы добавить это.
источник