-5

Мне нужен скрипт AHK, который создает:

  • папка в текущей открытой папке в проводнике Windows (под Windows 7),
  • чье имя состоит
    • текущая дата в формате (yyyy-mm-dd)
    • текст, который в данный момент находится в буфере обмена
  • вновь созданная папка должна содержать 3 подпапки с именами "1", "2" и "3"

Я хотел бы скопировать несколько слов (например, Testing Testing Testing) из другого приложения, перейти в папку на жестком диске (с помощью проводника Windows), активировать горячую клавишу, и AHK создаст для меня папку с именем

2012-06-04 Testing Testing Testing

с подпапками "1", "2" и "3".

1 ответ1

1

Сценарий

#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:: ... return указывает комбинацию клавиш (здесь: Win + C) и выполняется ... при нажатии.

  • WinGetClass, WinClass, A хранит заголовок текущего активного окна в переменной WinClass .

  • if (WinClass = "CabinetWClass") { ... } проверить, является ли WinClass CabinetWClass (класс Windows Explorer).

    Если так :, ... выполняется. В противном случае, SendPlay, #c эмулирует обычный ход Win + C.

  • FormatTime, CurrentDate,, yy-MM-dd сохраняет текущую дату (YY-MM-DD) в переменной CurrentDate .

  • Clipboard = очищает буфер обмена, поэтому мы можем проверять, когда что-то копируется в него.

  • CustomText = %Clipboard% копирует текущее содержимое буфера обмена в переменную CustomText .

  • SendPlay, !d^c выбирает адресную строку и копирует ее содержимое в буфер обмена.

  • ClipWait, 1 ждет до одной секунды, пока в буфер обмена не будут включены какие-либо данные.

  • If ErrorLevel { ... } проверяет, содержит ли буфер обмена какие-либо данные.

    Если это не так, скрипт прерывается.

  • CurrentDir = %Clipboard% копирует текущее содержимое буфера обмена в переменную CurrentDir .

  • Clipboard = %CustomText% возвращает буфер обмена к его первоначальному значению.

  • NewDir = %CurrentDir%\%CurrentDate% %CustomText% указывает имя нового каталога.

  • Run, cmd /c ... выполняет команду ... и затем завершается.

    • (md "%NewDir%" || pause) пытается создать %NewDir% . В случае сбоя происходит пауза, поэтому вы можете увидеть сообщение об ошибке.

    • md "%NewDir%\1" && md "%NewDir%\2" && md "%NewDir%\3" создает 3 подкаталога.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .