Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] обрезать по заданному MAX PATH

Ответить
Настройки темы
[решено] обрезать по заданному MAX PATH

Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


есть список


я нашел как только обрезать длину файла. т.е.:


а нужно именно обрезать по длине пути т.е. уровнять MAX PATH


1. причем желательно:
чтобы я мог выбрать длину MAX PATH до которого нужно обрезать
(т.е. нужно не до 255 а скажем до 200 чтобы при копировании файлов в другое место был разбег для глубины)

2. и обязательно сохранение расширения файла.

3. как сделать чтобы захватывались для обработки длины MAX PATH только файлы с расширением txt ?

Отправлено: 11:57, 18-06-2010

 

Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


список как создаешь? и где он хранится? или надо этим же скриптом создавать который будет проводить обрезку?
и еще, расширение входит в эти MAX_PATH?
ну и на последок, файлы нужно переименовать с новыми обрезанными названиями?

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 12:04, 18-06-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Попробуй вот такой код
Код: Выделить весь код
#include <file.au3>
$MAX_PATH = 200
$sFolder = "Path to the folder with files"; Путь до папки содержащий файлы, которые надо обрезать
$aFiles = _FileListToArray($sFolder, "*.txt", 1)
For $i = 1 to $aFiles[0]
	$sLongName = $sFolder & '\' & $aFiles[$i]
	$sLongName_NoExt = StringTrimRight($sLongName, 4); Название без расширения
	$sLongName_Ext = StringRight($sLongName, 3); Расширение
	$sNewName_NoExt = StringLeft($sLongName_NoExt, $MAX_PATH); Обрезаем название файла без расришения до длины MAX_PATH
	$sNewName = $sNewName_NoExt & "." & $sLongName_Ext; Добавляем расширение
	FileMove($sLongName, $sNewName);Переименовывем файл
Next
Требования:
  • Все файлы с длинными названиями и расширением txt должны находится в некоторой папке, путь до которого нужно ввести в скрипте
  • Расширение в общую длину MAX_PATH не входит, то есть после обрезки общая длина пути файла будет MAX_PATH+4
  • Проверить работоспособность сначала на тестовых файлах, во избежания неправильной работы скрипта

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:19, 18-06-2010 | #3


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата kaster:
список как создаешь? и где он хранится? или надо этим же скриптом создавать который будет проводить обрезку?
надо этим же скриптом создавать который будет проводить обрезку. наверное маска файлов, которые надо включать в список тут задается?

Цитата kaster:
и еще, расширение входит в эти MAX_PATH?
не важно. +-4 символа роли не сыграют. как проще реализовать, так и сделать

Цитата kaster:
ну и на последок, файлы нужно переименовать с новыми обрезанными названиями?
да, в этом главное предназначение - обрезать длину MAX PATH через переименование

Отправлено: 12:20, 18-06-2010 | #4


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Цитата shadowbat:
надо этим же скриптом создавать который будет проводить обрезку »
в таком случае, надо говорить не "есть список", а "есть файлы".
Цитата shadowbat:
не важно. »
с точки зрения скрипта тоже не важно. напишешь ты там MAX_PATH или MAX_PATH+-4. сложность одинаковая

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 12:23, 18-06-2010 | #5


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата kaster:
Все файлы с длинными названиями и расширением txt должны находится в некоторой папке, путь до которого нужно ввести в скрипте
хм... а как настроить чтобы скрипт сам искал по маске *.txt ?
нужно сохранить дерево папок. там около 1800 путей с папками, подпапками и в конце пути один файл txt.
т.е. количество путей с папками = количеству файлов, которые нужно обрезать

Цитата kaster:
Попробуй вот такой код


Цитата kaster:
в таком случае, надо говорить не "есть список", а "есть файлы".
согласен, я ошибся

Отправлено: 12:26, 18-06-2010 | #6


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


shadowbat, мде... а хотя бы прочитать что там написано? в частности строка 3
$sFolder = "Path to the folder with files"; Путь до папки содержащий файлы, которые надо обрезать
где там путь? я думал, ввести путь сам догадаешься. я же не знаю где у тебя лежат файлы.
Цитата shadowbat:
нужно сохранить дерево папок »
это усложняет задачу, т.к. рекурсивный поиск по подпапкам необходимо реализовывать вручную.
позже напишу, если никто более не откликнется

Цитата shadowbat:
хм... а как настроить чтобы скрипт сам искал по маске *.txt ? »
скрипт и так ищет только файлы с расширением тхт. посмотри скрипт, хотя бы мельком.

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 12:31, 18-06-2010 | #7


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


Цитата kaster:
shadowbat, мде... а хотя бы прочитать что там написано? в частности строка 3
$sFolder = "Path to the folder with files"; Путь до папки содержащий файлы, которые надо обрезать
где там путь? я думал, ввести путь сам догадаешься. я же не знаю где у тебя лежат файлы. »
так ты написал, что скрипт ищет работает только в одной папке, я по привычке и решил, что работает в той же папке что и сам без запроса пути

Цитата shadowbat:
Попробуй вот такой код »
работает.

тогда осталось решить с путями.
что легче?:
1. рекурсивный поиск по подпапкам необходимо реализовывать вручную
либо
2. переместить файлы из всех папок и подпапок с сохранением пути откуда они были взяты. потом переименовка. потом перемещение назад фалы туда, откуда они были взяты


по поводу поиска:
а если реализовать например такой алгоритм?:
Код: Выделить весь код
поиск файла *.txt
возвращение max path
переименовка
продолжить поиск

Последний раз редактировалось shadowbat, 18-06-2010 в 12:52.


Отправлено: 12:35, 18-06-2010 | #8


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Цитата shadowbat:
1. рекурсивный поиск по подпапкам необходимо реализовывать вручную »
это единственный путь, ибо п.2 - это абсурд, потому как в своей реализации содержит п.1 + кучу ненужных телодвижений и строк кода.
Цитата shadowbat:
по поводу поиска:
а сложно реализовать например такой алгоритм?: »
смотря что ты подразумеваешь под поиском. если искать в той же папке, то скрипт выше. если включая подпапки, то это п.1 из списка выше, т.к. содержит рекурсию.

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 12:52, 18-06-2010 | #9


Старожил


Сообщения: 267
Благодарности: 8

Профиль | Отправить PM | Цитировать


kaster, тогда еще вариант:
у меня есть список всех путей файлов.
можно ли, используя этот список, переименовывать файл с учетом max path?

т.е. получается не рекурсивный поиск, а просто работа по этим путям

Отправлено: 12:58, 18-06-2010 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] обрезать по заданному MAX PATH

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Высокий приоритет заданному процессу 7human7 Скриптовые языки администрирования Windows 14 26-01-2012 16:34
CMD/BAT - [решено] обрезать по заданному MAX PATH shadowbat Скриптовые языки администрирования Windows 17 08-07-2010 06:04
Удаление записей из таблицы по заданному времени на php magwolf Вебмастеру 5 14-08-2009 14:13
Win2003 и Max CPUID max to 3 3au4er Microsoft Windows NT/2000/2003 0 06-08-2008 12:13
Поиск элементов массива, чья сумма равна заданному числу Qwe1 Программирование и базы данных 28 26-09-2006 03:31




 
Переход