Страница 3 из 5
Добавлено: Вт янв 25, 2011 12:33
Batya
Jonmey
Что-то я перемудрил с переносом строк.
Упростил скрипт по твоей задаче (исправил исходный пост).
Результат работы должен не измениться.
Добавлено: Вт янв 25, 2011 13:00
Tol!k
Flasher писал(а):Тогда уж м.б. и дополнять, а не заменять?
Да, такое поведение устроит.
Можно и заменять. Сделать?
Flasher писал(а):Пустые строки можешь сделать между всеми подкаталогами, а не только папками, что в корне?
Теоретически можно. Если не получится запихнуть в кнопку, батник устроит?
Уникод или вин-1251 предпочтительнее?
Добавлено: Вт янв 25, 2011 13:37
Flasher
Tol!k писал(а):Можно и заменять. Сделать?
Да, отдельно тогда нарисуй, т. с.
Tol!k писал(а):Теоретически можно. Если не получится запихнуть в кнопку, батник устроит?
Если не получится, то, конечно, устроит.
Tol!k писал(а):Уникод или вин-1251 предпочтительнее?
Сложно сказать, всё от настроек реестра зависит. Ну, давай юникод.
Добавлено: Ср янв 26, 2011 05:39
Jonmey
Batya
Второй вариант скрипта работает также отлично как и первый.
А возможно сделать, чтобы в параметрах кнопки задавалось в каком формате выводить список - Unicode или Win-1251 (или ANSI, то есть равный локали системы)? И если файл со списком уже существует, то создавался новый файл? (например, если FileList.txt уже есть в целевой папке, то новый список записывался, например, в файл FileList2.txt и так по порядку).
Добавлено: Ср янв 26, 2011 15:55
Batya
Jonmey писал(а):А возможно сделать, чтобы в параметрах кнопки задавалось в каком формате выводить список - Unicode или Win-1251 (или ANSI, то есть равный локали системы)?
В функции CreateTextFile третий параметр отвечает за кодировку создавемого файла:
True - Unicode,
False - ASCII.
Batya писал(а):FSO.CreateTextFile(TargetList, True, True).Write List
Jonmey писал(а):И если файл со списком уже существует, то создавался новый файл? (например, если FileList.txt уже есть в целевой папке, то новый список записывался, например, в файл FileList2.txt и так по порядку).
В конец скрипта добавь функцию:
Код: Выделить всё
Function NextName(pFilePath)
Dim lPath, lName, lExt, li, lAdd
Const lQ = 1 'Минимальное количество цифр в номере
With CreateObject("Scripting.FileSystemObject")
lPath = .GetParentFolderName(pFilePath)
If lPath <> "" Then lPath = lPath & ""
lName = .GetBaseName(pFilePath)
lExt = .GetExtensionName(pFilePath)
NextName = lPath & lName & lAdd & "." & lExt
Do While .FileExists(NextName)
li = li + 1
If li < 10^lQ Then
lAdd = Right(String(lQ, "0") & li, lQ)
Else
lAdd = li
End If
NextName = lPath & lName & lAdd & "." & lExt
Loop
End With
End Function
И исправь строку:
Batya писал(а):FSO.CreateTextFile(NextName(TargetList), True, True).Write List
Добавлено: Ср янв 26, 2011 18:05
Flasher
Batya писал(а):В функции CreateTextFile третий параметр отвечает за кодировку создавемого файла: True - Unicode, False - ASCII.
Там же проверка нужна для запуска с разных осей. Стационар тут не подходит.
Tol!k
Какие там дела с кнопкой?
Добавлено: Ср янв 26, 2011 18:17
Batya
Flasher писал(а):Там же проверка нужна для запуска с разных осей. Стационар тут не подходит.
Ты это для чего сказал?
Ты используешь скрипт? У тебя в каких-то случаях возникают ошибки?
Добавлено: Ср янв 26, 2011 18:27
Flasher
Batya писал(а):Ты это для чего сказал?
Для призыва поправить скрипт. Будто не понятно.
Batya писал(а):Ты используешь скрипт? У тебя в каких-то случаях возникают ошибки?
Первый, возможно, пригодится. Я его проверял только в одном месте. Работает. А что это меняет?
Добавлено: Ср янв 26, 2011 19:09
Jonmey
Batya
Скрипт отличный и работает чудесно, существенно упрощая ряд задач.
Спасибо большое-пребольшое!
Добавлено: Ср янв 26, 2011 19:24
Flasher
Jonmey писал(а):существенно упрощая ряд задач
Например, каких?
Добавлено: Чт янв 27, 2011 09:23
Batya
Flasher писал(а):Для призыва поправить скрипт.
Flasher писал(а):Я его проверял только в одном месте. Работает.
Если всё работает, то зачем править?
С чего ты взял, что будут какие-то проблемы на различных ОС? Ты знаешь, как MS раскручивает используемый мной метод объекта FileSystemObject?
Думаю, что неопредлённые проблемы надо решать при их появлении, а не настраивать проблем, где их никогда не было.
Flasher писал(а):Например, каких?
У каждого могут быть свои узкоспециализированные задачи. "Будто не понятно."
Добавлено: Чт янв 27, 2011 09:46
Flasher
Batya писал(а):С чего ты взял, что будут какие-то проблемы на различных ОС?
Я ничего не брал, так задача была обрисована:
Jonmey писал(а):Unicode или Win-1251 (или ANSI, то есть равный локали системы)
Batya писал(а):Ты знаешь, как MS раскручивает используемый мной метод объекта FileSystemObject?
Ну, расскажи. Зачем было писать про два режима подхвата кодировки, если с единожды указанным всё будет работать аналогично?
Batya писал(а):У каждого могут быть свои узкоспециализированные задачи. "Будто не понятно."
Совершенно очевидно, что непонятно, иначе бы не спрашивал. Или мне запрещается для себя найти в этом какую-то пользу? Вопрос адресован другому, заметь. Дай возможность ему и ответить. Если предложишь способы того, где и как подобные списки можно использовать, буду признателен.
Добавлено: Чт янв 27, 2011 10:01
Batya
Flasher писал(а):Batya писал(а):
Ты знаешь, как MS раскручивает используемый мной метод объекта FileSystemObject?
Ну, расскажи. Зачем было писать про два режима подхвата кодировки, если с единожды указанным всё будет работать аналогично?
Я тоже не знаю. Поэтому и спрашиваю у тебя, есть ли живые примеры различных вариантов работы.
А так как меня спросили, я привел ответ из справки:
object.CreateTextFile(filename[, overwrite[, unicode]])
...
unicode
Optional. Boolean value that indicates whether the file is created as a Unicode or ASCII file. The value is true if the file is created as a Unicode file, false if it's created as an ASCII file. If omitted, an ASCII file is assumed.
Возможно, для вопрошающего это именно то, что нужно.
Добавлено: Чт янв 27, 2011 10:11
Flasher
Batya
Есть одна ось с юникодом, когда появится возможность выйти на неё, проверю с опущенным третьим параметром.
Добавлено: Чт янв 27, 2011 14:55
Jonmey
Про ANSI я упомянул, поскольку не знал, как проще сделать в скрипте - задать кодировку жестко или не жестко (согласно локали), но при этом чтобы была возможность перехода на Unicode. Меня устраивало оба варианта, но конечное решение я оставил за программистом.
Скрипт используется в системе бэкапов и восстановления, поскольку (как это ни странно) ни один из четырех мне известных плагинов для TC, создающих списки файлов, не создает списки такого вида (видимо из-за стремления авторов уменьшить размер конечного файла). А пользоваться штатными средствами ТС для этого крайне неудобно (по крайней мере, если это приходится делать регулярно).
Конечно, если задаться целью, то наверняка можно найти стороннюю утилиту, создающую подобные списки, но ее использование будет существенно менее удобным чем скрипт.