Korzystam z aplikacji w wierszu polecenia lub powłoki Git i chciałbym pobrać dane wyjściowe do Notatnika, aby ułatwić ich późniejsze przejrzenie i edycję.
Próbowałem następujących czynności, ale zawsze otrzymuję pustą instancję Notatnika:
diff file1.txt file2.txt | notepad
Wiem, że mogę przekierować dane wyjściowe do innego pliku, a następnie otworzyć plik w Notatniku. Chciałbym uniknąć dodatkowego kroku, ponieważ jestem przyzwyczajony do pipowania do Vima lub mniej w systemach innych niż Windows.
windows
command-line
notepad
Der Hochstapler
źródło
źródło
more
Windowsa.vim
, dlaczego po prostu go nie zainstalować?Odpowiedzi:
Z tego, co mogę powiedzieć, nie ma sposobu na bezpośrednie podłączenie do Notatnika.
Możesz jednak potokować do notatnika,
clip
a następnie wklejać go w następujący sposób:Następnie naciśnij Ctrl+ Vw Notatniku.
źródło
&& notepad file3.txt
?Rozważ użycie Vima lub, w twoim przypadku, gVim, jeśli wolisz środowisko graficzne.
Możesz następnie potokować do niego za pomocą pojedynczego łącznika jako argumentu, który instruuje Vim / gVim, aby czytał ze standardowego wejścia.
źródło
:%!diff file1.txt file2.txt
-
jest często używane w znaczeniu „czytać ze standardowego wejścia”, więc nie jest to ściśle ograniczone dovim
. Inni redaktorzy używają-i
(npkate
.).oto krótki program systemu Windows, który robi to poprawnie (bez blokowania schowka). Powinien być przystosowany do programu PowerShell i mogę zaktualizować tę odpowiedź, jeśli będę mieć czas, ale możesz również użyć tego programu bezpośrednio.
A co powiesz na PowerShell? Nie ma potrzeby instalowania innej aplikacji. Niestety, będzie trzeba utworzyć plik skryptu gdzieś w twojej
PATH
...Krótka wersja, której możesz użyć
Jeśli utworzysz plik wsadowy (np.
ShowInNotepad.bat
) Z następującą zawartością i umieścisz goPATH
gdzieś:możesz wtedy zadzwonić
echo blah | ShowInNotepad
z dowolnego miejsca!Należy pamiętać, że to nie zakładamy, że używasz najnowszej-owski wersji systemu Windows Vista (+) i nie niepełnosprawnej PowerShell lub odinstalowane .NET Framework. Innymi słowy, będzie działać domyślna instalacja systemu Windows.
Długie wyjaśnienie i alternatywy
Najłatwiejszym sposobem jest zautomatyzowanie operacji wklejania ( Ctrl+ V). Która co najmniej jedna odpowiedź już działa, ale ta korzysta z AHK - możesz mieć więcej szczęścia, jeśli PowerShell będzie działał w zamkniętym środowisku korporacyjnym.
Przejdźmy do scenariusza, tak?
Jest to dość proste, więc nie będę zawracał sobie głowy wyjaśnianiem skryptu bardziej niż komentarze.
Stosowanie
Aby go użyć, wystarczy umieścić skrypt w
.ps1
pliku (np.ShowInNotepad.ps1
), Umieścić go gdzieś w swoim,PATH
a następnie wywołaćpowershell ShowInNotepad.ps1
po umieszczeniu tekstu, który chcesz wyświetlić w schowku.Przykład:
Niestety wykonywanie skryptów PowerShell może być czasami trudne (zasady wykonywania i wszystkie inne). Dlatego skondensowałem ten skrypt do jednowierszowego, który można wywołać bezpośrednio z wiersza polecenia, a nawet umieścić w pliku wsadowym:
Jeśli utworzysz plik wsadowy (np.
ShowInNotepad.bat
) Z następującą zawartością i umieścisz goPATH
gdzieś:możesz wtedy zadzwonić
echo blah | ShowInNotepad
z dowolnego miejsca!źródło
Save
zachowań i wyjścia są inne. Oprócz zastąpienia samego Notatnika lub bezpośredniego wstrzykiwania tekstu do kontrolki edycji, nie ma wielu innych opcji. Oczywiście ta metoda ma wadę polegającą na zapychaniu zawartości schowka (choć i tak powinny one być efemeryczne). Nie sądzę, żeby utrata koncentracji była poważnym problemem; to jest ...ShowWindow
naciśnięciem klawisza a wysłaniem). I ta metoda wymaga nieco więcej konfiguracji (tworzenia pliku skryptu) do użycia, tak.Co powiesz na używanie AutoHotkey ?
Zapisz następujące
stdin.ahk
i umieść w katalogu AutoHotkey:Następnie wiersz poleceń:
Przesyła dane wyjściowe polecenia do Notatnika, o ile okno jest otwarte i nosi tytuł
Untitled - Notepad
. W przypadku, gdy okno nie jest aktywne, wesoło buforuje w tle, dopóki okno nie będzie aktywne. Możesz nawet przejść do innego programu, który ponownie będzie buforował.Wydaje się, że to umiera, gdy umiera program wyjściowy na nasze standardowe wejście ...
(Dla informacji kod stdin () został bezwstydnie w połowie wprowadzony tutaj )
źródło
Jest to całkowicie możliwe; Właśnie tego spróbowałem. Zakładam, że Notatnik jest domyślnie ustawiony na otwieranie plików txt:
OK, technicznie tworzysz plik, ale nie jest on zapisywany.
Pipowanie w więcej jest również opcją.
źródło
output.txt
to go zablokuje. Byłoby marginalnie bezpieczniejsze%temp%/somerandomstring.txt
.Oto brzydki, ale skuteczny sposób na osiągnięcie tego:
Tylko pamiętaj, aby wysłać tylko tekst. Inne dane będą potencjalnie interpretowane jako znaki kontrolne (CTRL, ALT, DEL itp.).
źródło
Oto kilka rozwiązań opartych na VBScript, które mogą działać (choć .. polegają trochę na aplikacjach otwieranych na czas):
pipe2key.vbs - otwiera aplikację określoną jako pierwszy argument, a następnie wysyła do niej StdIn jako naciśnięcia klawiszy. Musi być używany z cscript.exe, ponieważ wscript nie zapewnia dostępu StdIn. Prawdopodobnie dość długie w przypadku długich dokumentów - ale nie zapycha schowka
Przykładowe użycie:
diff file1.txt file2.txt | cscript pipe2key.vbs notepad.exe
Lub pasteinto.vbs. Automatyzuje działanie CTRL-V po uruchomieniu aplikacji (w ten sposób używa polecenia „clip”, jak wspomniano w poprzednich odpowiedziach). Znacznie szybszy i czystszy (moim zdaniem) niż pipe2key.vbs, ale proces zastąpi schowek
Przykładowe użycie:
diff file1.txt file2.txt | clip && pasteinto notepad.exe
źródło
Coś takiego „może” zadziałać.
Aw, nie zdawałeś sobie sprawy, że robisz to ręcznie za każdym razem (z dźwięków tego). Możesz za każdym razem zrobić coś w rodzaju makra lub zrobić coś takiego, aby przyspieszyć proces. Nie jestem tego pewien.
diff file1.txt file2.txt > file.txt | sleep 1 | notepad.exe file.txt | rm file.txt
Musiałby zakończyć zapisywanie zawartości pliku diff do pliku.txt, aby załadować całą operację porównania, czego nie jestem pewien, czy to zrobi. W takim przypadku może istnieć sposób na przerwanie między operacją potoku.
źródło
&
,&&
I||
są operatorom poleceń łańcucha razem. Wszystkie 3 zachowują się inaczej, jeśli komenda generuje inną niż 0 wartość zwracaną.|
jest całkowicie różny, jak to jest stosowane do rur wyjściu z jednego programu do drugiego. Wynik może być taki, jaki chciałeś, ale użycie jednego z operatorów łańcuchowych czyni intencję bardziej zrozumiałą, ponieważ w tym przykładzie nie jest pożądane faktyczne orurowanie. Dodatkowe informacje: microsoft.com/resources/documentation/windows/xp/all/proddocs/…Mój język nie jest angielski, więc przepraszam za błędy.
Myślę, że nie możesz bezpośrednio umieścić danych wyjściowych w otwartym Notatniku. Może się mylę co do tego. Musisz stworzyć plik z danymi wyjściowymi, aby nad nim pracować. Trójnik poleceń może przesyłać dane wyjściowe do dwóch lub może być więcej poleceń lub plików w tym samym czasie.
koszulka męska
Nie zapomnij użyć >> zamiast>, gdy ponownie wykorzystasz dane wyjściowe do pliku. > Nadpisze plik, >> doda wynik po tym, co już ma w tym pliku.
źródło
tee
zazwyczaj nie jest dostępny w systemie Windows i nawet gdyby tak było, nie pomogłoby to z tym problemem.Nie możesz, Notatnik jest na to zbyt ograniczony! Jeszcze lepiej ... zainstaluj Cygwin i obejdź ten „brak funkcji” systemu Windows. Następnie możesz użyć polecenia, które już znasz.
AFAIK, bardzo niewiele programów Windows obsługuje potokowanie, jeszcze gorzej w przypadku programów GUI.
Możesz spróbować otworzyć żądania funkcji w jednym z programów „Windows tail”, aby je dodać.
źródło