Вверх ↑
Этот топик читают: Гость
Ответов: 2
Рейтинг: 0
#1: 2015-06-30 15:25:29 ЛС | профиль | цитата
Добрый день. Есть файл list.txt с таким содержанием
79111234567 Иванов
79817654321 Петров
...
Есть папка с экселевскими файлами вида: 79111234567.xls 79817654321.xls ...
Если экселевский файл есть в файле list.txt, то его надо переименовать в 79111234567_Иванов.txt

Сейчас я это делаю батником:
@echo off
chcp 1251
for /f "tokens=1,2" %%a in (c:\list.txt) do if exist "%%a.xls" move "%%a.xls" "%%a_%%b.xls"

Захотелось красивости и ГУИ. Открыл для себя HiAsm. Если будет возможность- опишите этот алгоритм с элементами и логикой HiAsm'a, а то пока я заткнулся на выборе папки с файлами экселя и выбором текстового файла((( а что с ними дальше делать и куда это передавать- пока туманно(
Заранее спасибо.
карма: 0

0
Ответов: 2267
Рейтинг: 676
#2: 2015-06-30 15:52:10 ЛС | профиль | цитата
hiasm_noob, вот небольшой вариант, НО прежде чем запускать проверьте все. Работа примера расчитана на запуск приложения из места где хранятся файлы (.xls). Сохраните схему перед компиляцией в директорию с файлами или изменяйте схему.
code_35932.txt
Посмотрите справку (F1), хуже точно не будет.

карма: 11

0
файлы: 1code_35932.txt [1.7KB] [435]
Ответов: 2
Рейтинг: 0
#3: 2015-06-30 16:12:35 ЛС | профиль | цитата
sla8a, Большое спасибо. Файл у меня правда, ничего не делает, но алгоритм теперь мне почти понятен. Дальше постараюсь сам.
карма: 0

0
Ответов: 91
Рейтинг: 6
#4: 2015-07-01 08:38:17 ЛС | профиль | цитата
Приветствую всех.
Тема немного похожа на мою поэтому задам вопрос здесь.

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

DDD;756;00102;123; ; ; ; ; ; ;DGTE0NW ;TUTUREST,N;DC33;

Все первые строки во всех файлах одинаковые кроме значения между второй и третьей "точкой-запятой".
То есть в данном случае это значение 00102. В следующем файле это будет 00103 и т.д.

карма: 0

0
Ответов: 2267
Рейтинг: 676
#5: 2015-07-01 11:57:13 ЛС | профиль | цитата
ibegen, вот вам пример, пробуйте:
code_35941.txt
карма: 11

0
файлы: 1code_35941.txt [1.6KB] [388]
Ответов: 16884
Рейтинг: 1239
#6: 2015-07-01 14:00:23 ЛС | профиль | цитата
sla8a писал(а):
вот вам пример, пробуйте
ibegen писал(а):
Я получаю по почте кучу файлов, и все они имеют одно и то же название.
Хотел бы я посмотреть на папку в которой "куча" файлов с одним и тем-же названием.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 91
Рейтинг: 6
#7: 2015-07-01 14:51:19 ЛС | профиль | цитата
sla8a
Спасибо огромное! Реально работает!

Tad
Поверьте Tad, это так. Обычно 400 писем с одним и тем же названием и в каждом письме файл, так же с одним названием.
К сожалению, по наверное понятным причинам, выложить даже скриншот не могу. Естественно в каталоге такое разместить нельзя.
А вот оутлук вполне себе все письма отображает.
Забыл добавить, я поэтому их и переименовываю, потому что в каталоге на диске их не возможно хранить...


------------ Дoбавленo в 14.51:
Не могу понять с помощью какого компонента можно сделать так чтобы для переименования файла не надо было каждый раз запускать программу.
Просто переименование происходит по нажатию кнопки...
Я ввожу имя файла но ничего не происходит....
Запутался совсем в точкахнаправленияхтипах.
Ткните носом пожалуйста.

#pas
Add(MainForm,15170714,154,357)
{
Width=443
Height=123
}
Add(FileTools,16447858,595,434)
{
link(FileName,14866261:Value,[(601,397)(650,397)(650,524)(342,524)])
}
Add(StrList,3645453,462,427)
{
Point(doGetString)
Point(onGetString)
link(onGetString,12106691:doSplit,[])
}
Add(Hub,7192023,392,455)
{
link(onEvent1,3645453:doLoad,[])
link(onEvent2,13053767:doData,[(413,468)(413,475)])
}
Add(InfoTip,2916621,140,336)
{
Info=#37:а? аВб?аБб?аАаНаНаОаЙ аПаАаПаКаЕ аИб?|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|
Frame=2
Width=232
Height=200
Margin=4
}
Add(InfoTip,11903989,378,336)
{
Info=#56:а?аАаГб?б?аЖаАаЕаМ txt б?аАаЙаЛ аИ аПаОаЛб?б?аАаЕаМ аПаЕ|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|
Frame=2
Width=120
Height=200
Margin=4
}
Add(InfoTip,5027282,504,336)
{
Info=#41:а аАаЗаБаИаВаАаЕаМ б?б?б?аОаКб? аИ аПаОаЛ|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|0:|
Frame=2
Width=155
Height=200
Margin=4
}
Add(FileSearch,6387157,294,455)
{
Ext="*.txt"
Dir="C:Users*******DesktopEC14"
SubDir=1
Include=2
link(onSearch,14866261:doValue,[])
}
Add(DoData,13053767,420,469)
{
Data=Integer(0)
link(onEventData,3645453:doGetString,[])
AddHint(-1,36,21,13,Data)
}
Add(MultiStrData,12106691,511,434)
{
From=2
Count=1
link(onPart1,15659192:doString,[])
}
Add(Memory,7097269,252,455)
{
link(onData,6387157:doSearch,[])
}
Add(Memory,14866261,336,455)
{
link(onData,7192023:doEvent1,[])
}
Add(FormatStr,15659192,553,434)
{
Mask="%1\%2.txt"
Point(FString)
link(onFString,16447858:doMove,[])
link(Str1,7097269:Value,[(559,398)(101,398)(101,524)(258,524)])
}
Add(BitBtn,7537324,154,455)
{
Left=25
Top=25
link(onClick,6107514:doText,[])
}
Add(Edit,6107514,203,455)
{
Left=100
Top=25
Text="AB1ZAE"
link(onEnter,7097269:doValue,[(243,468)(243,461)])
}


карма: 0

0
Ответов: 2267
Рейтинг: 676
#8: 2015-07-01 15:22:19 ЛС | профиль | цитата
ibegen писал(а):
Я ввожу имя файла но ничего не происходит....
В схеме вы изменили не название файла, а директорию (папку) в которой должны находится файлы для переименования. И о каком имени файла вообще идет речь Не в одном из ваших постов вы не указали какое имя имеют файлы и какое должно быть после переименования. По вашему описанию предположил что после переименования должно быть такое: 00103.txt.
карма: 11

0
Ответов: 91
Рейтинг: 6
#9: 2015-07-01 15:32:03 ЛС | профиль | цитата
Как все у меня запущено... извините.
Я предполагал что имя файла не важно... так как я писал что оно одно и то же во всех случаях...
AB1ZAE.TXT - вот такое имя.
Что то теперь я вообще запутался.
карма: 0

0
Ответов: 2267
Рейтинг: 676
#10: 2015-07-01 15:36:28 ЛС | профиль | цитата
Возможно вот так: code_35942.txt
Tad писал(а):
посмотреть на папку в которой "куча" файлов с одним и тем-же названием.
Как видете не одному мне не понятно как в папку может быть несколько файлов с одинаковыми названиями.
карма: 11

0
файлы: 1code_35942.txt [1.4KB] [392]
Ответов: 91
Рейтинг: 6
#11: 2015-07-01 15:43:43 ЛС | профиль | цитата
Коллеги, так я же не писал что они у меня где то в одной папке лежат.
В этом вся и проблема.
Я писал что получаю кучу файлов по почте....
Потом я их по одному кладу в директорию и переименовываю...
За день с ума сойти можно...
карма: 0

0
Ответов: 2267
Рейтинг: 676
#12: 2015-07-01 15:58:50 ЛС | профиль | цитата
Тогда еще проще: code_35943.txt
------------ Дoбавленo в 15.58:
Или поставьте DirectoryChanges и нечего лишний раз на кнопку тыкать если файл постоянно с одним и тем же названием.
Add(MainForm,15170714,140,217)
{
Width=443
Height=123
link(onCreate,15135852:doStartWatch,[])
}
Add(FileTools,16447858,511,175)
{
link(FileName,13948231:FString,[(517,163)(570,163)(570,272)(279,272)])
}
Add(StrList,3645453,385,168)
{
Point(doGetString)
Point(onGetString)
link(onGetString,12106691:doSplit,[])
}
Add(Hub,7192023,315,196)
{
link(onEvent1,3645453:doLoad,[])
link(onEvent2,13053767:doData,[(336,209)(336,216)])
}
Add(DoData,13053767,343,210)
{
Data=Integer(0)
link(onEventData,3645453:doGetString,[])
AddHint(-1,36,21,13,Data)
}
Add(MultiStrData,12106691,427,175)
{
From=2
Count=1
link(onPart1,15659192:doString,[])
}
Add(FormatStr,15659192,469,175)
{
Mask="%1\%2.txt"
Point(FString)
link(onFString,16447858:doMove,[])
link(Str1,7051484:Var3,[(475,138)])
}
Add(BitBtn,7537324,224,196)
{
Left=25
Top=25
link(onClick,16082200:doWork2,[])
}
Add(Edit,6107514,224,140)
{
Left=100
Top=25
Width=90
Text="AB1ZAE"
link(onEnter,16082200:doWork1,[(263,153)])
}
Add(GetDataEx,7051484,280,133)
{
link(Data,4679756:Text,[])
}
Add(HubEx,16082200,259,196)
{
link(onEvent,13948231:doString,[])
}
Add(FormatStr,13948231,273,196)
{
Mask="%2\%1.txt"
Point(FString)
link(onFString,7192023:doEvent1,[])
link(Str1,6107514:Text,[(279,184)(230,184)])
link(Str2,7051484:Var2,[])
}
Add(DirectoryChanges,15135852,189,231)
{
Flags=8
SubTree=1
link(onChange,16082200:doWork3,[(263,237)])
link(DirName,7051484:Var1,[(195,138)])
}
Add(VisualStrings,4679756,280,91)
{
Lines=#29:C:Users*******DesktopEC14|
Width=165
}
карма: 11

0
файлы: 1code_35943.txt [1.3KB] [414]
Ответов: 91
Рейтинг: 6
#13: 2015-07-01 16:05:43 ЛС | профиль | цитата
sla8a
Стыдно признаться, но некоторые моменты не догоняю вообще.
Почему в последней версии компонент "формат" формирует строковую переменную из названия файла и пути к нему?
Последняя версия не работает, а предыдущая работает почти как надо, только вот имя файла сохраняет как "%;2.txt"



карма: 0

0
Ответов: 2267
Рейтинг: 676
#14: 2015-07-01 16:30:47 ЛС | профиль | цитата
ibegen писал(а):
имя файла сохраняет как "%;2.txt"
Вы и внесли это изменение в своем первом примере, у меня было в FormatStr (Формирование строки по маске) : %1\%2.txt у вас стало %1\%;2.txt, зачем вы это поменяли, непонятно.
ibegen писал(а):
Почему в последней версии компонент "формат" формирует строковую переменную из названия файла и пути к нему?
В первом варианте компонент FileSearch: (Пoиcк файлов на диске) выдавал имена всех найденных файлов с путем к нему. В последних вариантах первый компонент FormatStr (Формирование строки по маске) формирует стоку из пути к файлу и его имени, второй новое название файла.
карма: 11

0
Ответов: 91
Рейтинг: 6
#15: 2015-07-02 09:47:07 ЛС | профиль | цитата
Приветствую sla8a!
Спасибо огромное. Действительно, как вы сказали - DirectoryChanges - самое лучшее решение для моего случая!
Все работает!!!!
Единственно что я изменил - это то за чем следит компонент.
Оказалось что отслеживание изменения атрибутов файла работает лучше остальных.

Теперь как всегда жадность разыгралась, хочется красивостей....
В описании компонента DirectoryChanges есть пример вывода в таблицу.
Я сделал по этому примеру, но не могу понять два момента:
1 - почему за одно изменение у меня выскакивает несколько одинаковых строк?
2 - где надо сделать изменения что бы выводилось только имя файла?

code_35952.txt
карма: 0

0
файлы: 1code_35952.txt [1.6KB] [293]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)