![]() |
|
Модераторы: ginnie, korob2001 |
![]()
|
|
| naigo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 18.7.2006 Репутация: нет Всего: нет |
есть утилита которая проводит дефрагментацию отдельных файлов и всё бы хорошо, но не понимает она пути типа "C:\Documents and Settings\usver\Главное меню\Программы\AviSynth"
но зато чудесно работает с равнозначным путём : C:\DOCUME~1\usver\5D29~1\4A66~1\AVISYN~1 никто из уважаемых программистов не подскажет как преобразовать "Главное меню => 5D29~1" "Программы => 4A66~1" |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
||||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 9 Всего: 50 |
Короткие имена файлов можно попробовать получить так (NT4):
А преобразовать вместе с путем не знаю как. Может, модуль для этого есть? |
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 2 Всего: 84 |
naigo, попробуй в кавычки заключать путь...
Добавлено @ 12:58 т.е. там где твоему дефрагментатору передаётся путь примерно так defrag($path); сделай defrag("\"$path\""); Добавлено @ 13:05 5D29~1\4A66~1 а такое странно... т.к. должно быть 6сиволов + ~1... я таких путей не видел... ты как такое получил преобразование? |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
nitr,
|
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 2 Всего: 84 |
chaos, не проще ли?
dir "path" ? |
|||
|
||||
| amg |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 9 Всего: 50 |
Написал скриптик, который полные длинные имена преобразует в короткие (просто парсит вывод команды dir /x). Кто-нибудь, проверьте, пожалуйста, а то у меня только NT4. Запускается
Это сообщение отредактировал(а) amg - 9.10.2006, 12:59 |
||||
|
|||||
| chaos |
|
||||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
amg, не изобретай велосипед!!! В Win API есть функция GetShortPathName
и оказалось что есть такая и в перл модуле Win32
пример:
|
||||
|
|||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 9 Всего: 50 |
||||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
хотя можно теоретически "дернуть" любую функцию из Win API c с помощью Win32::GetProcAddress
|
|||
|
||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 9 Всего: 50 |
Да, с использованием Win32::GetShortPathName гораздо проще и работает гораздо быстрее.
Но я все же нашел применение и своему скрипту: если на машине не стоит дистрибутив Perl, то можно просто поместить в любую директорию скрипт, а также два файла, perl.exe и perl58.dll (поместится даже на дискету), и скрипт будет работать. |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: 3 Всего: 44 |
можно вызывать функцию с помощью rundll32.exe
Добавлено @ 11:37 а, не получиться! rundll32.exe умеет выполнять только функции с одним параметром. так что не прокатит |
|||
|
||||
| naigo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 18.7.2006 Репутация: нет Всего: нет |
Всем участникам Огромное спасибо за помощь
|
|||
|
||||
![]()
|
| Правила форума "Perl: Системное программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |