|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 1.2] AutoIt скрипты |
|
[Архив - Часть 1.2] AutoIt скрипты
|
Ветеран Сообщения: 565 |
Профиль | Сайт | Отправить PM | Цитировать
Внимание! Тема переведена в архивное состояние (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. |
|
------- Отправлено: 10:47, 10-02-2006 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
Цитата:
|
||
------- Отправлено: 21:19, 01-10-2006 | #391 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
- у ф-ции будет ДВА рабочих параметра (источник и приемник), а не один; - сравнивать нужно ПОФАЙЛОВО и расширение тут непричем (конфликтуют ИМЕНА, а не расширения сами по себе) Допустим, мы хотим проверить существование заданного файла в каталоге и вернуть его новое для этой папки (см. текст ф-ции), алгоритм будет следующий: перед записью в каталог файла (не из этого каталога!) возвращаем через функцию его новое имя и сохраняем уже под этим именем... если что в 7zip именно так. MsgBox (0,"",_FileNewName ("myfile.dat", "c:\Test")) Func _FileNewName ($sFile, $dDir, $delim = "_") $dDir = StringRegExpReplace ($dDir, "\\ *$", "") Local $sName= StringRegExpReplace ($sFile, "\.[^.]*$", "") Local $sExtn= StringMid ($sFile, StringLen ($sName) +1) Local $i=1, $dFile=$sFile While FileExists ($dDir & "\" & $dFile) $dFile = $sName & $delim & $i & $sExtn $i = $i +1 WEnd Return $dFile EndFunc |
|
Последний раз редактировалось amel27, 04-10-2006 в 10:28. Причина: правка скрипта Отправлено: 02:29, 02-10-2006 | #392 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
Функция что ты привёл в пример, отлично справляется с задачей, если бы нужно было переименовывать файлы которые копируются, в таком случае, можно указать и все файлы с определённым расширением. Но мне нужно проверять именно файлы в том каталоге, куда будут копироваться файлы с другого каталога... Пример: Имеем два каталога, первый - “c:\test\a” (с которого будут копироваться файлы), второй - “c:\test\b” (в который должный помещаться файлы, и в котором должно проверяться совпадение имён). В каталоге “b”, перед копированием файлов с каталога “a”, нужно переименовать все файлы с расширением *.dat, но только те которые копируются. Т.е, если допустим, мы копируем два файла - filefirst.dat, filesecond.dat, то для них и нужно проверять совпадение в каталоге “c:\test\b”, если там такие файлы уже есть, то нужно переименовать их в те же имена + _1, но если уже есть и такие имена, то + _2 и т.д... Чтобы в результате, не было потерь никаких файлов, чтобы те файлы которые копируются с “c:\test\a”, в том же виде поместились в “c:\test\b”, а существующие файлы в “c:\test\b”, чтобы всегда переименовались и сохранялись под разными последовательными именами (с приставкой на конце _1, _2 и т.д). |
|
------- Отправлено: 18:39, 02-10-2006 | #393 |
Balog
Сообщения: n/a |
Извините, может этот вопрос уже поднимался но поиском ответа не нашел.
Опыта в AutoIt у меня очень мало, и я споткнулся еще на примерах к программе. У меня русскоязычная винда и хотелось бы писать на русском и английском языках скажем в блокноте и иметь доступ к меню (скажем через ALT). Проблема в следующем: англоязычные комбинации клавиш не проходят по определению, русскоязычные типа ALT+Ф проходят только если стоит русский язык по умолчанию, но тогда неправильно выводится англоязычный текст. Переключение текущего языка проблемы не решает, а переключения языка по умолчанию я не нашел. Объясните пожалуйста как решить подобную проблему. |
Отправлено: 12:05, 03-10-2006 | #394 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
Цитата:
$sDir = c:\Source\ $dDir = c:\Destin\ $sFiles = _FileListToArray ($sDir, "*.dat") For $i=1 To $sFiles[0] $newName = _FileNewName ($sFiles[$i], $dDir) FileMove ($sDir & $sFiles[$i], $dDir & $newName) Next |
||
Отправлено: 18:07, 03-10-2006 | #395 |
Ищу Человека… Сообщения: 420
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 03:08, 04-10-2006 | #396 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Нижний пример почти достигает желаемого результата. Пишу почти, так как есть один нюанс... При первом запуске скрипта, всё проходит отлично - файлы в папке назначения переименовываются в новые имена (с добавкой _1), а файлы с папки источника, копируются на место тех которые переименовались. Однако, после вторичного запуска скрипта, я ожидал чтобы те файлы (в папке назначения), имена которых совпадают с именами копируемых файлов (с папки источника), переименовались уже не в те же что и в первый раз (с добавкой _1), а в имена с добавкой последующей цифры тем что уже существуют (с добавкой _2 в этом случае). А файлы которые копируются, чтобы стали под их оригинальными именами в папку назначения. Таким образом, всегда будут сохраняться копии всех файлов, из всех попыток копирования файлов - но, рабочие файлы (те которые не должный переименовываться, т.е те которые копируются из папки источника), должный быть всегда под своими оригинальными именами, а те файлы (в папке назначения) которые были под этими же именами, должный всегда быть переименованы с добавкой _1, _2 и т.д, но чтобы были всегда последними в последовательности добавленных к ним цифрам. Я пытался самостоятельно переделать немного алгоритм, но никак не получается - Я понимаю что там требуется внести какое-то мелкое изменение, но оно должно быть правильное, и я пока этого сделать немогу, нехватает опыта что-ли... |
------- Отправлено: 04:51, 04-10-2006 | #397 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать amel27
Цитата:
Мне всего лишь нужно было заместо перемещения, прописать копирование: |
|
------- Отправлено: 05:12, 04-10-2006 | #398 |
Balog
Сообщения: n/a |
Sanja Alone
WinAPI метод переключает раскладки а не изменяет язык по умолчанию. Переключать язык как я понял сугубо недостаточно. Нужно что бы менялся язык по умолчанию. Если язык по умолчанию русский то команда Send("!Ф") предположим, срабатывает, но тогда неправильно отображается английский текст. Да и надеяться что у пользователя язык по умолчанию будет русский (у меня у самого английский) не приходится. Так что нужен способ изменения языка по умолчанию. Я понимаю, что для автоматизации инсталляций работа с меню неактуальна, но неужели никто не задавался таким вопросом? |
Последний раз редактировалось Balog, 04-10-2006 в 09:45. Отправлено: 09:26, 04-10-2006 | #399 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
FYI: подредактировал ф-цию _FileNewName... старый вариант был короче, но для файлов без расширений всегда возвращал на конце точку - для операций с файлами это не важно, а вот для сравнений не есть гут |
|
Отправлено: 10:25, 04-10-2006 | #400 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? | DreDo | Хочу все знать | 4 | 01-12-2009 18:54 | |
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. | Vadikan | AutoIt | 1543 | 18-01-2009 10:46 | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
[Архив - Часть 1.3] AutoIt скрипты | biork | AutoIt | 503 | 09-06-2007 11:27 | |
[Архив - Часть 1.1] AutoIt скрипты | EgOrus | AutoIt | 335 | 04-02-2006 16:58 |
|