Estoy ejecutando una aplicación en el símbolo del sistema o un shell Git , y me gustaría obtener la salida en el Bloc de notas, para una revisión y edición más fáciles más adelante.
Intenté lo siguiente, pero siempre obtengo una instancia vacía de Bloc de notas:
diff file1.txt file2.txt | notepad
Soy consciente de que puedo redirigir la salida a otro archivo y luego abrir el archivo en el Bloc de notas. Me gustaría evitar el paso adicional, porque estoy acostumbrado a conectarme a Vim o menos en sistemas que no son Windows.
windows
command-line
notepad
Der Hochstapler
fuente
fuente
more
en Windows.vim
, ¿por qué no solo instalarlo?Respuestas:
Por lo que puedo decir, no hay forma de canalizar directamente en el Bloc de notas.
Sin embargo, puede canalizar
clip
y luego pegar en el bloc de notas, así:Luego simplemente presione Ctrl+ Ven el Bloc de notas.
fuente
&& notepad file3.txt
?Considere usar Vim , o en su caso gVim si prefiere un entorno gráfico.
Luego puede canalizarlo con un solo guión como argumento, que le indica a Vim / gVim que lea desde la entrada estándar.
fuente
:%!diff file1.txt file2.txt
-
a menudo se usa para significar "leer de stdin", por lo que esto no se limita estrictamente avim
. Uso de otros editores-i
(pkate
. Ej .).Aquí hay un breve programa de Windows que lo hace correctamente (sin golpear el portapapeles). Debería ser adaptable a PowerShell, y podría actualizar esta respuesta si tengo tiempo, pero también puede usar ese programa directamente.
Bueno, ¿qué tal PowerShell? No es necesario instalar otra aplicación. Desafortunadamente, usted tendrá que crear un archivo de script en alguna parte en su
PATH
...Versión corta que puedes usar
Si crea un archivo por lotes (por ejemplo
ShowInNotepad.bat
) con los siguientes contenidos y lo coloca en suPATH
lugar:¡entonces puedes llamar
echo blah | ShowInNotepad
desde cualquier lugar!Tenga en cuenta que esto no suponerse que se está utilizando una versión reciente-ish de Windows (Vista +) y no se ha desactivado PowerShell o desinstalado el marco .NET. En otras palabras, una instalación predeterminada de Windows funcionará.
Explicación larga y alternativas
La forma más fácil que se me ocurre es automatizar la acción de pegar ( Ctrl+ V). Lo que al menos otra respuesta ya está haciendo, pero esa usa AHK: es posible que tenga más suerte al hacer que PowerShell funcione en un entorno corporativo bloqueado.
Sigamos con el guión, ¿sí?
Es bastante sencillo, por lo que no me molestaré en explicar el guión más de lo que ya lo hacen los comentarios.
Uso
Para usarlo, solo necesita colocar el script en un
.ps1
archivo (por ejemploShowInNotepad.ps1
), colocarlo en algún lugar de suPATH
y luego llamarpowershell ShowInNotepad.ps1
después de colocar el texto que desea mostrar en el portapapeles.Ejemplo:
Desafortunadamente, ejecutar scripts de PowerShell a veces puede ser difícil (políticas de ejecución y todo). Por lo tanto, he condensado este script en una línea que puede llamar directamente desde el Símbolo del sistema, o incluso colocarlo en un archivo por lotes:
Si crea un archivo por lotes (por ejemplo
ShowInNotepad.bat
) con los siguientes contenidos y lo coloca en suPATH
lugar:¡entonces puedes llamar
echo blah | ShowInNotepad
desde cualquier lugar!fuente
Save
salida de los comportamientos modificados es diferente. Además de reemplazar el Bloc de notas o inyectar directamente el texto en su control de edición, no hay muchas otras opciones. Por supuesto, este método tiene el inconveniente de golpear el contenido del portapapeles (aunque de todos modos se supone que son efímeros). No creo que perder el enfoque sea un problema importante; es un ...ShowWindow
envío y las pulsaciones de teclas). Y este método requiere un poco más de configuración (crear el archivo de script) para usar, sí.¿Qué tal el uso de AutoHotkey ?
Guarde lo siguiente como
stdin.ahk
y póngalo en su directorio AutoHotkey:Luego la línea de comando:
Canaliza la salida del comando en el Bloc de notas, siempre que la ventana esté abierta y titulada
Untitled - Notepad
. En el caso de que la ventana no esté activa, se almacenará en el búfer en segundo plano hasta que la ventana esté activa. Incluso puede ir a otro programa y continuará almacenando en el búfer una vez más.Sin embargo, esto parece morir cuando el programa que sale a nuestra entrada estándar muere ...
(Para información, el código stdin () fue descaradamente medio incrustado desde aquí )
fuente
Esto es totalmente posible; Solo lo intenté. Supongo que Notepad está configurado para abrir archivos txt de forma predeterminada:
OK, técnicamente estás creando un archivo, pero no se guarda.
Ir a más es también una opción.
fuente
output.txt
esto, lo golpeará. Marginalmente más seguro sería usar%temp%/somerandomstring.txt
.Aquí hay una forma fea pero efectiva de lograr esto:
Solo asegúrese de enviar solo salida de texto. Otros datos se interpretarán potencialmente como caracteres de control (CTRL, ALT, DEL, etc.).
fuente
Aquí hay un par de soluciones basadas en VBScript que pueden funcionar (aunque ... dependen un poco de las aplicaciones que se abren a tiempo):
pipe2key.vbs: abre la aplicación especificada como primer argumento y luego le envía StdIn como pulsaciones de teclas. Debe usarse con cscript.exe ya que wscript no proporciona acceso StdIn. Probablemente bastante lento para documentos largos, pero no golpeará el portapapeles
Ejemplo de uso:
diff file1.txt file2.txt | cscript pipe2key.vbs notepad.exe
O pasteinto.vbs. Automatiza la operación CTRL-V después de iniciar una aplicación (por lo tanto, utiliza el comando 'clip' como se menciona en las respuestas anteriores). Considerablemente más rápido y limpio (en mi opinión) que pipe2key.vbs, pero el proceso sobrescribirá el portapapeles
Ejemplo de uso:
diff file1.txt file2.txt | clip && pasteinto notepad.exe
fuente
Algo como este "podría" funcionar.
Aw, no te diste cuenta de que esto es algo que harías manualmente cada vez (por lo que parece). Es posible que pueda hacer algún tipo de macro o algo que lo haga por usted cada vez para acelerar el proceso. No estoy seguro de eso.
diff file1.txt file2.txt > file.txt | sleep 1 | notepad.exe file.txt | rm file.txt
Tendría que terminar de escribir el contenido de diff en file.txt para que cargue la totalidad de la operación de diff, lo que no estoy seguro de si lo hará. Puede haber una manera de pausar de alguna manera entre la operación de tubería si ese es el caso.
fuente
&
,&&
y||
son operadores para encadenar comandos juntos. Los 3 se comportan de manera diferente en cómo proceden si un comando genera un valor de retorno distinto de 0.|
es completamente diferente ya que se utiliza para canalizar la salida de un programa a otro. El resultado podría ser lo que deseaba, pero el uso de uno de los operadores de encadenamiento aclara la intención, porque no se desea una tubería real en ese ejemplo. Para referencia adicional: microsoft.com/resources/documentation/windows/xp/all/proddocs/…Mi idioma no es el inglés, así que lamento los errores.
Creo que no puede poner directamente la salida en el Bloc de notas abierto. Puede ser que me equivoque al respecto. Tiene que crear un archivo con la salida para poder trabajar en él. El comando tee puede canalizar la salida a dos o puede haber más comandos o archivos al mismo tiempo.
camiseta de hombre
No olvide usar >> en su lugar> cuando reduzca la salida al archivo. El> sobrescribirá el archivo, >> agregará la salida después de lo que ya haya en ese archivo.
fuente
tee
generalmente no está disponible en Windows e incluso si lo estuviera, no ayudaría con este problema.No puedes, ¡el Bloc de notas es demasiado limitado para esto! Mejor aún ... instale Cygwin y solucione toda esta "falta de características" de Windows. Luego puede usar el comando que ya conoce.
AFAIK, muy pocos programas de Windows admiten la canalización, lo que es peor para los programas GUI.
Puede intentar abrir solicitudes de funciones a uno de los programas de "cola de Windows" para agregar eso.
fuente