Автонумерация в конце строки текстового файла

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
shveicar
Сообщения: 277
Зарегистрирован: Пн апр 18, 2011 01:54
Откуда: Россия Москва

Автонумерация в конце строки текстового файла

Сообщение shveicar »

Здравствуйте.
Столкнулся с такой проблемой - есть текстовой файл со ссылкой
(http://адрес.ru/) необходимо создать список ссылок вида

Код: Выделить всё

http://адрес.ru/1/ 
http://адрес.ru/2/
http://адрес.ru/3/
и т.д до 250 ссылок(желательно каждая ссылка на одной строке) Можно ли средствами total commander реализовать данную функцию или же нужно использовать спец программы? Если кто сталкивался с подобной проблемой прошу совета. Заранее благодарен.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

ТС здесь в любом случае ни при чем: такие вещи делаются скриптами или батниками (которые сами суть скрипты). По батникам у нас специализируется Tol!k, сиди жди его. Такую простую задачу я бы и сам осилил, но он сделает это явно быстрее и качественнее.
Если бы я был на его месте, я бы задал следующие вопросы:
1) В первом файле только адрес и больше ничего?
2) Что значит "создать список"? Где создать? На экране? В буфере? В файле? Если последнее, то как он будет называться и где располагаться?
3) А почему ты не хочешь использовать для этого средства Экселя? Займет тридцать секунд. Импорт, нумерация, экспорт.
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Аватара пользователя
shveicar
Сообщения: 277
Зарегистрирован: Пн апр 18, 2011 01:54
Откуда: Россия Москва

Сообщение shveicar »

1) В первом файле только адрес и больше ничего?
конечно только адресс
2) Что значит "создать список"? Где создать? На экране? В буфере? В файле? Если последнее, то как он будет называться и где располагаться?
Прошу прощения что сразу не пояснил-Естественно список создается в текстовом файле. Называться он будет например "список" (не принципиально) создаваться он будет в рабочем окне (или если есть возможность по выбору -другая панель)
3) А почему ты не хочешь использовать для этого средства Экселя? Займет тридцать секунд. Импорт, нумерация, экспорт.
Можно конечно попробовать и xl но если есть возможность упростить с помощью скрипта, то было бы удобнее - например создал кнопку - изменил например ссылку и создал нужное количество адресов.
Я для начала сделал так - Создал в рабочей директории с помощью скрипта 250 пустых папок, переименовал их, скопировал имена в буфер и создал текстовой файл с именами в списке. ну а далее осталось только добавить одинаковые символы и все. но как-то мне кажется это не совсем удобно.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение 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/)
Аватара пользователя
shveicar
Сообщения: 277
Зарегистрирован: Пн апр 18, 2011 01:54
Откуда: Россия Москва

Сообщение shveicar »

Спасибо Tol!k - батник работает!

Добавлено спустя 11 минут:

Да и кстати. какие параметры должны быть для создания такого же файла в той же директории что и файл со ссылкой? Пробую разные варианты все равно создает в противоположной панели
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

"%T" поменять на "%P". Cм. справку.

зы: поспешил я тут, видимо, с матчастью.
Аватара пользователя
shveicar
Сообщения: 277
Зарегистрирован: Пн апр 18, 2011 01:54
Откуда: Россия Москва

Сообщение shveicar »

Tol!k - а что нужно изменить в батнике, что-бы номера создавалить с символом / перед номером То-есть, Батник отлично работает когда ссылка имеет вид

Код: Выделить всё

http://адресс/6/movies/
а когда адресс заканчивается без наклонной черты,

Код: Выделить всё

http://адресс/6/movies
то номер присоединяется к букве? Пытался менять значения методом тыка, что-то не выходит.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

for /l %%c in (1,1,%2) do (>>"%~3%~n1.%~2.txt" echo:%addr%/%%c/)

%addr% — адрес
%%c — счётчик
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение 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
Могу, в принципе, для удобства добавить окна с вопросами, с чего начинать и сколько строк создавать. Может пригодиться в некоторых ситуациях.
Последний раз редактировалось Flasher Вс июл 17, 2011 00:06, всего редактировалось 2 раза.
Аватара пользователя
shveicar
Сообщения: 277
Зарегистрирован: Пн апр 18, 2011 01:54
Откуда: Россия Москва

Сообщение 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- тот же результат. И конечно было бы удобнее если скрипт был с окнами(так, как количество строк в каждом случае может быть разное), а менять каждый раз кнопку не совсем удобно. Спасибо.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

shveicar
TC когда обновлялся последний раз? Тот же случай. %V меняем на %P%N.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Пример: %V %PCписок_для_%N 1 250
Не будет работать с пробелами в путях
shveicar писал(а):было бы удобнее если скрипт был с окнами(так, как количество строк в каждом случае может быть разное), а менять каждый раз кнопку не совсем удобно.
Параметры

Код: Выделить всё

? %P%N "%PCписок_для_%O.%E" 1 250
Аватара пользователя
shveicar
Сообщения: 277
Зарегистрирован: Пн апр 18, 2011 01:54
Откуда: Россия Москва

Сообщение shveicar »

Спасибо- Flasher, с %P%N все заработало. А TС у меня 7.55 portabl - менять пока не собираюсь.
Последний раз редактировалось shveicar Сб июл 16, 2011 20:56, всего редактировалось 3 раза.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение 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 писал(а):Не будет работать с пробелами в путях
В папках да, но не в файлах. Исправил.
Последний раз редактировалось Flasher Вс июл 17, 2011 00:04, всего редактировалось 4 раза.
Аватара пользователя
shveicar
Сообщения: 277
Зарегистрирован: Пн апр 18, 2011 01:54
Откуда: Россия Москва

Сообщение shveicar »

Вот это вещь! Огромное спасибо!
Ответить