Что нового

[Автоматизация] создание папки в текущей папке

alex842

Новичок
Сообщения
3
Репутация
0
Подскажите, пжл. Я совсем новичок в AutoIt. Мне нужен скрипт, который бы создавал в текущей папке новую папку с заданным именем. Под текущей папкой я имею в виду активную папку, ту в которой в данный момент находится курсор (надеюсь вы меня поняли). напр. я захожу в D\Дистрибутивы\ и по нажатию F11 создаю папку "Прочти". Т.е. путь к папке заранее не известен.

Я пробовал использовать такой скрипт:
Код:
Func CreatFolder()
DirCreate(@ScriptDir&"\Прочти")
EndFun


Но он создает папку, там где находится сам скрипт. :(
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
alex842 [?]
Но он создает папку, там где находится сам скрипт.
ничего удивительного, учитывая, что написано в скрипте, а именно "Создать папку Прочти в папке где находится сам скрипт".
по поводу самого вопроса, это не совсем тривиальная задача, и реализация зависит, как мне помнится от вида и конфигурации ОС. поищи на форуме, подобные темы уже были
 
Автор
A

alex842

Новичок
Сообщения
3
Репутация
0
Хотелось бы, чтобы на всех Виндовс работал скрипт, :-[ но главное чтобы на XP SP2 и SP3 работал.

Насколько я понимаю, мне сначала нужно получить путь к текущей папке. Но как это сделать и главное связать с созданием папки... :scratch:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
alex842 [?]
Насколько я понимаю, мне сначала нужно получить путь к текущей папке. Но как это сделать и главное связать с созданием папки.
ИМХО, здесь практически готовый вариант.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Для WinXP есть _ExplorerGetPath (см. вложение этого поста), как такое сделать на Win7 пока не знаю.
 

WSWR

AutoIT Гуру
Сообщения
941
Репутация
363
Мой корявый вариант для Win7, у меня вроде работает:

Код:
HotKeySet("{NUMPAD0}", "_Path")
While 1
Sleep (40)	
WEnd

Func _Path()
$Path = ControlGetText("", "","[CLASS:ToolbarWindow32; INSTANCE:2]")
If $Path = "" Then ; для рабочего стола
DirCreate(@DesktopDir&"\Прочти")
Else
$Path1 = StringTrimLeft($Path, 7)
DirCreate($Path1&"\Прочти")
EndIf
EndFunc
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
alex842
Во первых есть скрипт, который возвращает путь.
Во вторых уже давно пользуюсь своей программой SaveFolders, которая по F9 создаёт новый каталог эмуляцией клавиш. Это быстрей работает, так как у эксплорера есть задержка обновления содержимого, ну и доступен ввод имени сразу. Кроме этого в комплекте F10 - создание txt-файла аналогичным образом, F2 - переименование без учёта расширения (полезно на WinXP) и F1 - переименование с расширением, тоже полезно с учётом что если промахнулся на F1, то не вылетает справка Windows и можно снова нажать F2 с корректным выделением имени.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
Для XP, вроде работает ;)
Код:
#include <Misc.au3>

While 1
	Do
		If _IsPressed('11') And _IsPressed('45') Then Exit ;CTRL + E
		Sleep(10)
	Until _IsPressed('7A') = 1 ;F11
	$Path = _GetCurrentFolder()
	If Not $Path = 0 Then DirCreate(_GetCurrentFolder() & '\Прочти')
WEnd

Func _GetCurrentFolder()
	$CurPath = WinGetTitle('[ACTIVE]')
	If $CurPath = 'Program Manager' Then
		Return @DesktopDir
	ElseIf $CurPath = 'Мои документы' Then
		Return @MyDocumentsDir
	ElseIf $CurPath = 'Мой компьютер' Then
		Return
	Else
		Return $CurPath
	EndIf
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Zaramot [?]
Для XP, вроде работает
У меня не установлена в свойствах папки опция "Выводить полный путь в строке заголовка", так что Ваш вариант не работает.


Добавлено:
Сообщение автоматически объединено:

Zaramot,
На скриншотах.
 

Zaramot

I ♥ AutoIt
Сообщения
1,160
Репутация
660
madmasles,
Хмммм... А я и забыл про эту фичу :(
 
Автор
A

alex842

Новичок
Сообщения
3
Репутация
0
Всем спасибо за ответы. Сейчас буду разбираться. Тему пока не закрываю, пока не решил вопрос до конца. :-[
 
Верх