Страница 1 из 2
Автонумерация в конце строки текстового файла
Добавлено: Пн май 30, 2011 19:41
shveicar
Здравствуйте.
Столкнулся с такой проблемой - есть текстовой файл со ссылкой
(
http://адрес.ru/) необходимо создать список ссылок вида
Код: Выделить всё
http://адрес.ru/1/
http://адрес.ru/2/
http://адрес.ru/3/
и т.д до 250 ссылок(желательно каждая ссылка на одной строке) Можно ли средствами total commander реализовать данную функцию или же нужно использовать спец программы? Если кто сталкивался с подобной проблемой прошу совета. Заранее благодарен.
Добавлено: Пн май 30, 2011 20:11
Вахмурка
ТС здесь в любом случае ни при чем: такие вещи делаются скриптами или батниками (которые сами суть скрипты). По батникам у нас специализируется Tol!k, сиди жди его. Такую простую задачу я бы и сам осилил, но он сделает это явно быстрее и качественнее.
Если бы я был на его месте, я бы задал следующие вопросы:
1) В первом файле только адрес и больше ничего?
2) Что значит "создать список"? Где создать? На экране? В буфере? В файле? Если последнее, то как он будет называться и где располагаться?
3) А почему ты не хочешь использовать для этого средства Экселя? Займет тридцать секунд. Импорт, нумерация, экспорт.
Добавлено: Пн май 30, 2011 20:33
shveicar
1) В первом файле только адрес и больше ничего?
конечно только адресс
2) Что значит "создать список"? Где создать? На экране? В буфере? В файле? Если последнее, то как он будет называться и где располагаться?
Прошу прощения что сразу не пояснил-Естественно список создается в текстовом файле. Называться он будет например "список" (не принципиально) создаваться он будет в рабочем окне (или если есть возможность по выбору -другая панель)
3) А почему ты не хочешь использовать для этого средства Экселя? Займет тридцать секунд. Импорт, нумерация, экспорт.
Можно конечно попробовать и xl но если есть возможность упростить с помощью скрипта, то было бы удобнее - например создал кнопку - изменил например ссылку и создал нужное количество адресов.
Я для начала сделал так - Создал в рабочей директории с помощью скрипта 250 пустых папок, переименовал их, скопировал имена в буфер и создал текстовой файл с именами в списке. ну а далее осталось только добавить одинаковые символы и все. но как-то мне кажется это не совсем удобно.
Добавлено: Пн май 30, 2011 21:29
Tol!k
Код: Выделить всё
@echo off &chcp 1251 >nul
rem Пример параметров для ТС: %P%N 250 "%T"
if "%~2"=="" (echo Use: %0 address.txt 100500 &pause &goto :eof)
set /p addr=<%1
cd.>"%~3%~n1.%~2.txt"
for /l %%c in (1,1,%2) do (>>"%~3%~n1.%~2.txt" echo:%addr%%%c/)
Добавлено: Вт май 31, 2011 01:08
shveicar
Спасибо Tol!k - батник работает!
Добавлено спустя 11 минут:
Да и кстати. какие параметры должны быть для создания такого же файла в той же директории что и файл со ссылкой? Пробую разные варианты все равно создает в противоположной панели
Добавлено: Вт май 31, 2011 01:18
Flasher
"%T" поменять на "%P". Cм.
справку.
зы: поспешил я тут, видимо, с матчастью.
Добавлено: Сб июл 16, 2011 15:36
shveicar
Tol!k - а что нужно изменить в батнике, что-бы номера создавалить с символом / перед номером То-есть, Батник отлично работает когда ссылка имеет вид
а когда адресс заканчивается без наклонной черты,
то номер присоединяется к букве? Пытался менять значения методом тыка, что-то не выходит.
Добавлено: Сб июл 16, 2011 18:00
Tol!k
for /l %%c in (1,1,%2) do (>>"%~3%~n1.%~2.txt" echo:%addr%/%%c/)
%addr% — адрес
%%c — счётчик
Добавлено: Сб июл 16, 2011 18:14
Flasher
shveicar
Код: Выделить всё
' Создание списка c добавлением строк из строки
' выделенного файла по схеме: <строка>/<№ счётчика>/
' Параметры: %V "путь к создаваемому файлу" <первый № счётчика> <число строк>
' Пример: %V "%PCписок_для_"%N 1 250
'=======================================================
With CreateObject("Scripting.FileSystemObject")
Set File = .OpenTextFile(WScript.Arguments(0),1)
Set List = .OpenTextFile(WScript.Arguments(1),8,True)
End With
Str = File.ReadLine
For i=WScript.Arguments(2) to Abs(WScript.Arguments(2))+Abs(WScript.Arguments(3))-1
If Right(Str,1)="/" Then
List.WriteLine Str & i & "/"
Else
List.WriteLine Str & "/" & i & "/"
End If
Next
List.Close
WScript.Quit
Могу, в принципе, для удобства добавить окна с вопросами, с чего начинать и сколько строк создавать. Может пригодиться в некоторых ситуациях.
Добавлено: Сб июл 16, 2011 19:19
shveicar
Добрый вечер. Спасибо за ответ. Пытаюсь запустить скрипт что-то не идет. строка 7 символ 3 путь не найден. код кнопки
Код: Выделить всё
TOTALCMD#BAR#DATA
%COMMANDER_PATH%\Utils\html\sozdanie_faila_dobavlenie_strok.vbs
%V %PCписок_для_%N 1 250
C:\WINDOWS\System32\WScript.exe
sozdanie_faila_dobavlenie_strok
0
-1
пробовал также полный путь в ковычках, и с расширением .txt- тот же результат. И конечно было бы удобнее если скрипт был с окнами(так, как количество строк в каждом случае может быть разное), а менять каждый раз кнопку не совсем удобно. Спасибо.
Добавлено: Сб июл 16, 2011 19:33
Flasher
shveicar
TC когда обновлялся последний раз?
Тот же случай. %V меняем на %P%N.
Добавлено: Сб июл 16, 2011 19:43
Tol!k
Пример: %V %PCписок_для_%N 1 250
Не будет работать с пробелами в путях
shveicar писал(а):было бы удобнее если скрипт был с окнами(так, как количество строк в каждом случае может быть разное), а менять каждый раз кнопку не совсем удобно.
Параметры
Добавлено: Сб июл 16, 2011 19:43
shveicar
Спасибо- Flasher, с %P%N все заработало. А TС у меня 7.55 portabl - менять пока не собираюсь.
Добавлено: Сб июл 16, 2011 19:54
Flasher
С окнами:
Код: Выделить всё
' Создание списка c добавлением строк из строки
' выделенного файла по схеме: <строка>/<№ счётчика>/
' Параметры: %P%N "<путь к создаваемому файлу>"
' Пример: %P%N "%PCписок_для_"%N
'=======================================================
With CreateObject("Scripting.FileSystemObject")
Set File = .OpenTextFile(WScript.Arguments(0),1)
Set List = .OpenTextFile(WScript.Arguments(1),8,True)
End With
N = InputBox("Введите первый номер счётчика", "Добавление строк в список")
Count = InputBox("Введите число строк", "Добавление строк в список")
If Len(N) = 0 Or Len(Count) = 0 Then WScript.Quit
Str = File.ReadLine
For i = N to Abs(N)+Abs(Count)-1
If Right(Str,1) = "/" Then
List.WriteLine Str & i & "/"
Else
List.WriteLine Str & "/" & i & "/"
End If
Next
List.Close
WScript.Quit
Добавлено спустя 2 минуты:
Tol!k писал(а):Не будет работать с пробелами в путях
В папках да, но не в файлах. Исправил.
Добавлено: Сб июл 16, 2011 19:54
shveicar
Вот это вещь! Огромное спасибо!