Попробуй вот такой код
Код:
#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
- Проверить работоспособность сначала на тестовых файлах, во избежания неправильной работы скрипта