¿Script de Windows para copiar texto al portapapeles?


27

Estoy usando una aplicación que requiere varios intentos para iniciar sesión (debido a servidores sobrecargados).

Esta aplicación no tiene la función "recordar mi contraseña".

Por lo tanto, me gustaría hacer una secuencia de comandos (preferiblemente una secuencia de comandos .bat), que primero copiaría mi contraseña en el portapapeles , para no tener que volver a escribir mi contraseña en cada intento de inicio de sesión, y luego iniciar la aplicación ( parte fácil)

¿Es esto posible con un comando de MS-DOS? ¿Necesito un pequeño exe u otro lenguaje de script?

Obviamente estoy buscando la solución más rápida para implementar.

Gracias de antemano por tus ideas


No creo que pueda resolver esto en un archivo .bat, eche un vistazo a autohotkey, debería solucionar su problema en pocas líneas, si ya conoce un lenguaje de programación, esto debería ser bastante fácil.
Guillermo Siliceo Trueba

Respuestas:


33

http://www.petri.co.il/software/clip.zip
Nota: el enlace de Petri está actualmente inactivo. Lo obtuvo de Windows Server 2003, pero también veo clip.exe en Windows 7. También está en versiones de Windows posteriores a Windows 7.

C:\>echo abc| clip  <-- copies abc to the clipboard.

EDITAR
Lo principal es ese comando de clip, pero como lo señaló Asu, una línea como echo abctambién enviará un \ r \ n (que es una línea nueva). Si desea evitar eso, entonces ese es un problema muy estándar resuelto reemplazando echo texttoecho, con echo|set/p=texttoechoSoC:\>echo|set/p=texttoecho|clip

Además
, por supuesto, puede pegar con el botón derecho, pero para una línea de comando pegar también.

Unxutils (algo antiguo que no se mantuvo durante más de una década) tiene gclip y pclip (no parecen estar en gnuwin32), con los que puede copiar y pegar a través de la línea de comandos.

note- gnuwin32 podría no ser tan actualizado tampoco.

C:\unxutilsblah\usr\local\wbin>echo a|gclip <-- copy a to clipboard

C:\unxutilsblah\usr\local\wbin>pclip  
a

C:\unxutilsblah\usr\local\wbin>

nota: puede copiar todo wbin a c:\unxutils, por ejemplo , y los EXE no tienen dependencias / dlls.

y, por supuesto, puede hacer pclip> aa para pegar en un archivo. o pclip | somecmd

C:\>(echo b & echo a)<ENTER>
b
a

C:\>

C:\unxutils>(echo b & echo a)|gclip<ENTER>


C:\unxutils>pclip<ENTER>
b
a

C:\unxutils>pclip|sort<ENTER>
a
b

C:\unxutils>

En una nota relacionada, en la ventana cmd, haga clic izquierdo en la esquina superior izquierda, luego en propiedades, luego en la pestaña de opciones, marque la casilla que dice modo de edición rápida. Ahora puedes copiar / pegar rápidamente. haga clic en mantener presionado y arrastre con el mouse sobre lo que desea copiar seleccionándolo, presione ENTER para copiar. Haga clic derecho para pegar.
barlop

y para pegar en la línea de comando, haga clic con el botón derecho del mouse. para obtenerlo dentro de un archivo por lotes, deberá escribir un pequeño script o ejecutable en algún otro lenguaje como vbs, perl, c para hacerlo o compilar a alguien más stackoverflow.com/questions/1704455/… por cierto, .vbs usa wshextra .dll set clip = createobject ("WshExtra.Clipboard") Parece que Perl lo hace en dos pequeñas líneas y no necesita ningún archivo adicional.
barlop

y la página web en el sitio de petri que lo mencionó, aunque muchos otros simplemente enlazan al archivo. petri.co.il/quickly_copy_error_and_display_messages.htm
barlop

también ese enlace menciona la publicación de blog de raymond chen, pero también un comentario sobre la respuesta allí en este enlace SO menciona un comentario en la publicación de raymond chen que usa unxutils gclip y pclip stackoverflow.com/questions/1704455/…
barlop

2
Sin embargo, veo que clip.exe está disponible en Windows 10.
Bill Rodman

26

La opción de barlop no es del todo correcta porque echoagregará un carácter de nueva línea a su contraseña rompiéndola.

Lo que necesita usar en su lugar es esto:

echo|set /p=MyPassWord|clip

De esta forma, la cadena se copiará en el portapapeles tal como está.


1
Esta debería ser una respuesta aceptada. Me ayudó con nuevos caracteres de línea y comillas.
Piotr Sobczyk

debería haber editado la respuesta existente
endolith

@endolith No tenía los privilegios para hacerlo en ese momento.
Asu

no realmente como es: se agrega un espacio en blanco al final.
Thierry Dalon

@ThierryDalon "| clip" al final elimina el espacio, por lo que no debería haberlo agregado.
Asu

1

AutoIt v3 puede automatizar ventanas, lo que facilita probar varios intentos de inicio de sesión.

AutoIt v3 es un lenguaje de secuencias de comandos de tipo BASIC gratuito diseñado para automatizar la GUI de Windows y las secuencias de comandos generales. Utiliza una combinación de pulsaciones de teclas simuladas, movimiento del mouse y manipulación de ventanas / controles para automatizar tareas de una manera no posible o confiable con otros lenguajes (por ejemplo, VBScript y SendKeys). ¡AutoIt también es muy pequeño, autónomo y se ejecutará en todas las versiones de Windows listas para usar sin necesidad de "tiempos de ejecución" molestos!

AutoIt se diseñó inicialmente para situaciones de "implementación" de PC para automatizar y configurar de manera confiable miles de PC. Con el tiempo se ha convertido en un lenguaje poderoso que admite expresiones complejas, funciones de usuario, bucles y todo lo que los scripters veteranos esperarían.

Tienen buenos ejemplos, documentación y una comunidad sólida que puede ayudarlo con los problemas de script.

Sin embargo, es mejor que pregunte si pueden resolver el problema con sus servidores sobrecargados, ya que la automatización de las solicitudes solo puede empeorar el problema para ellos ...


Esta herramienta parece muy útil, sin embargo, me adheriré al Ctrl - V manual, no me llevará mucho más tiempo ahora que no tengo que escribir la contraseña o Ctrl-C manualmente.
Sébastien

1
@Sebastien: No entiendo, ¿está solicitando un script para ayudarlo a completar la contraseña más fácilmente y, sin embargo, solo acepta una solución que solo copia / pega? ¿Sabía que si selecciona los círculos de contraseña en el cuadro de contraseña, puede copiarlos / pegarlos desde allí? Tenga en cuenta que puede votar las respuestas con la flecha arriba del número para recompensar la reputación.
Tamara Wijsman

1
La primera respuesta realmente satisface exactamente la necesidad (bastante básica) que describí en la pregunta. Ahora, cuando quiero llevar la automatización un paso más allá, definitivamente echaré un vistazo a AutoIt;) [y sobre el 'voto', todavía no tengo la reputación de ello]
Sébastien

"círculos de contraseña" ¿Te refieres a asteriscos? ¡No son círculos! Intenta escribirlos con una fuente enorme en Ms Word ;-) Err, bueno, ¡supongo que algunos programas usan círculos!
barlop

@barlop: No, no son asteriscos. Los círculos están realmente equivocados, creo que se llaman "puntos", vea esta imagen . La próxima vez, escribiré "caracteres de contraseña" que deberían mantenerme a salvo hasta que alguien invente "cifras de contraseña" ...
Tamara Wijsman

1

Yo mismo he encontrado un escenario similar y así es como lo he resuelto.

Primero, almaceno mis contraseñas en Windows Credential Vault (Windows Vista y superior). Para esto, uso la biblioteca de llaveros de Python, pero también puedes usar algo como CredMan (Powershell) para administrarlos. El uso de Windows Credential Vault significa que la contraseña nunca debe escribirse en la línea de comandos, por lo que es poco probable que se filtre (como a través de un historial de línea de comandos).

En segundo lugar, uso una herramienta como clip para copiar la contraseña al portapapeles.

Es posible que desee combinar los dos con su propio script de PowerShell que toma el texto del administrador de credenciales y lo coloca en el portapapeles. El guión podría ser algo tan simple como:

$cred = Read-Creds 'Some System'
[Windows.Forms.Clipboard]::SetText($cred.CredentialBlob)

Luego, todo lo que tiene que hacer es agregar la contraseña a 'Some System' en Windows Credential Manager y esa secuencia de comandos colocará mágicamente la contraseña en el portapapeles por comando.


1
Gracias; Iba a sugerir usar Powershell para acceder al portapapeles. Tenga en cuenta que puede usarlo powershell -c <command>desde dentro de CMD, por lo que si realmente tiene que ser un archivo por lotes, podría usar algo como powershell -c [Windows.Forms.Clipboard]::SetText(%PASSWORD%)después de que se usó CMD para cargar la contraseña en la variable (¡por favor, por favor!)% PASSWORD%.
CBHacking

0

La forma más fácil de hacer esto es:

  1. abrir Bloc de notas
  2. copia [ CTRL+ C] esta línea:
  3. ECHO | SET /P=mypassword | CLIP
  4. pegue [ CTRL+ V] esta línea en el Bloc de notas
  5. y cambie "mypassword" para su texto, luego guárdelo como "filename" .bat

Y puede editar este texto copiado cuando lo desee simplemente edite este archivo con el Bloc de notas.


-1 debería haber resumido esta respuesta en una oración en la parte superior, antes de los pasos de su bebé (si incluye pasos de bebé), y ese resumen sería para salvar a las personas que son técnicas de tener que leer todos sus pasos de bebé. El interlocutor sabe cómo escribir un guión, por lo que sabe que ctrl-c copia al portapapeles y ctrl-v pega. como lo harían la mayoría de los súper usuarios, que es para quién está destinado este sitio. Por supuesto, su respuesta ya está satisfecha por otros. Acaba de agregar pequeños pasos que el interrogador no necesita.
barlop

1
Y debe declarar que no está ofreciendo una nueva solución aquí, solo elaborando una ya establecida.
barlop

¿Por qué repetir la respuesta de alguien más?
Asfand Qazi
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.