AHK para crear carpeta + subcarpetas

AHK para crear carpeta + subcarpetas

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 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:: ... returnespecifica una combinación de teclas (aquí: Win+ C) y se ejecuta ...cuando se presiona.

  • WinGetClass, WinClass, Aalmacena el título de la ventana actualmente activa en la variable WinClass.

  • if (WinClass = "CabinetWClass") { ... }compruebe si WinClasses CabinetWClass(clase del Explorador de Windows).

    Si es así: ...se ejecuta. De lo contrario, SendPlay, #cemula un trazo Win+ normal C.

  • FormatTime, CurrentDate,, yy-MM-ddalmacena la fecha actual ( YY-MM-DD) en la variable CurrentDate.

  • 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 variable CustomText.

  • SendPlay, !d^cselecciona la barra de direcciones y copia su contenido al portapapeles.

  • ClipWait, 1espera 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 variable CurrentDir.

  • 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.

información relacionada