Necesito un script AHK que cree:
- una carpeta en la carpeta actualmente abierta en el Explorador de Windows (en Windows 7),
- cuyo nombre consiste
- la fecha actual en el formato (
yyyy-mm-dd
) - el texto que se encuentra actualmente en el portapapeles
- la fecha actual en el formato (
- la carpeta recién creada debe contener 3 subcarpetas, denominadas "1", "2" y "3".
Me gustaría copiar algunas palabras (por ejemplo Testing Testing Testing
, ) de otra aplicación, ir a una ubicación en mi disco duro (usando el Explorador de Windows), activar la tecla de acceso rápido y AHK creará para mí una carpeta llamada:
2012-06-04 Testing Testing Testing
con las subcarpetas "1", "2" y "3".
Respuesta1
La secuencia de comandos
#c::
WinGetClass, WinClass, A
if (WinClass = "CabinetWClass")
{
FormatTime, CurrentDate,, yy-MM-dd
CustomText = %Clipboard%
Clipboard =
SendPlay, !d^c
ClipWait, 1
If ErrorLevel
{
MsgBox, Could not read directory name.
return
}
CurrentDir = %Clipboard%
Clipboard = %CustomText%
NewDir = %CurrentDir%\%CurrentDate% %CustomText%
Run, cmd /c (md "%NewDir%" || pause) && md "%NewDir%\1" && md "%NewDir%\2" && md "%NewDir%\3"
}
else
SendPlay, #c
return
Cómo funciona
#c:: ... return
especifica una combinación de teclas (aquí: Win+ C) y se ejecuta...
cuando se presiona.WinGetClass, WinClass, A
almacena el título de la ventana actualmente activa en la variableWinClass
.if (WinClass = "CabinetWClass") { ... }
compruebe siWinClass
esCabinetWClass
(clase del Explorador de Windows).Si es así:
...
se ejecuta. De lo contrario,SendPlay, #c
emula un trazo Win+ normal C.FormatTime, CurrentDate,, yy-MM-dd
almacena la fecha actual (YY-MM-DD
) en la variableCurrentDate
.Clipboard =
limpia el portapapeles, para que podamos comprobar cuándo se copia algo en él.CustomText = %Clipboard%
copia el contenido actual del portapapeles en la variableCustomText
.SendPlay, !d^c
selecciona la barra de direcciones y copia su contenido al portapapeles.ClipWait, 1
espera hasta un segundo hasta que el portapapeles contenga datos.If ErrorLevel { ... }
comprueba si el portapapeles contiene algún dato.Si no es así, el script se cancela.
CurrentDir = %Clipboard%
copia el contenido actual del portapapeles en la variableCurrentDir
.Clipboard = %CustomText%
restablece el portapapeles a su valor original.NewDir = %CurrentDir%\%CurrentDate% %CustomText%
especifica el nombre del nuevo directorio.Run, cmd /c ...
ejecuta el comando...
y luego sale.(md "%NewDir%" || pause)
intenta crear%NewDir%
. Si falla, se detiene para que pueda ver el mensaje de error.md "%NewDir%\1" && md "%NewDir%\2" && md "%NewDir%\3"
crea los 3 subdirectorios.