• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Переименовывание файла Dbf

  • Автор темы any-oz
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

any-oz

Создаю файл dbf, но так как есть ограничение на его длину в 8 символов (XBase), то приходится переименовывать, мне надо подставить единичку в начало файла:

КаталогВыгрузки = ПутьВывода+"\";
ФС.УстТекКаталог(КаталогВыгрузки);

Файл = ФС.НайтиПервыйФайл(ИмяФайла+".DBF");

Если ПустаяСтрока(Файл)=0 Тогда
Попытка
ФС.ПереименоватьФайл(Файл,"1"+Файл,1);
Исключение
Сообщить("Не удалось переименовать Файл выгрузки!");
КонецПопытки;
КонецЕсли;

Помогите, что я делаю не так?!
 
J

jj_mail

убери попытку и посмотри, что пишет
 
K

kaa

<!--QuoteBegin-any-oz+6:12:2007, 16:15 -->
<span class="vbquote">(any-oz @ 6:12:2007, 16:15 )</span><!--QuoteEBegin-->Файл = ФС.НайтиПервыйФайл(ИмяФайла+".DBF");
[snapback]88629" rel="nofollow" target="_blank[/snapback]​
[/quote]

Наверника возвращает что-то типа C:\jjjjj\jjjjj\kkkkk\ИмяФавйла.dbf

<!--QuoteBegin-any-oz+6:12:2007, 16:15 -->
<span class="vbquote">(any-oz @ 6:12:2007, 16:15 )</span><!--QuoteEBegin-->ФС.ПереименоватьФайл(Файл,"1"+Файл,1);
[snapback]88629" rel="nofollow" target="_blank[/snapback]​
[/quote]
В итоге 1C:\jjjjj\jjjjj\kkkkk\ИмяФавйла.dbf - и ничеко небудет так как такого файла нет
Нужно вычлинить из файла Имя файла и каталог

ФС.ПереименоватьФайл(Файл,Каталог+"\1"+Файл,1);
 
A

any-oz

Наверника возвращает что-то типа C:\jjjjj\jjjjj\kkkkk\ИмяФавйла.dbf
В итоге 1C:\jjjjj\jjjjj\kkkkk\ИмяФавйла.dbf - и ничеко небудет так как такого файла нет
Нужно вычлинить из файла Имя файла и каталог

ФС.ПереименоватьФайл(Файл,Каталог+"\1"+Файл,1);

Смотрю в Отладчике:
КаталогВыгрузки = "C:\Temp\"
ФС.УстТекКаталог(КаталогВыгрузки) = Ошибка в выражении!
Файл = "682C0612.DBF"
"1"+Файл = 1682С0612.DBF
ФС.ПереименоватьФайл(Файл,"1"+Файл,1) = Ошибка в выражении!
 
V

vitfil

КомандаСистемы("move /y "+КаталогВыгрузки+ИмяФайла+" "+КаталогВыгрузки+"1"+ИмяФайла);
 
V

vbs

вот так
UnLoadDirectory = "E:\Transfer";
FS.SetCurrentDirectory(UnLoadDirectory);
FileName = "Avail.dbf";
File = FS.FindFirstFile(FileName);
FS.MoveFile(File,"1"+File,1);

или так
UnLoadDirectory = "E:\Transfer";
FS.SetCurrentDirectory(UnLoadDirectory);
FileName = "Avail*";
File = FS.FindFirstFile(FileName+".dbf");
FS.MoveFile(File,"1"+File,1);

точно работает
 
V

vbs

А что касается вот такой конструкции,
Файл = "682C0612.DBF"
"1"+Файл = 1682С0612.DBF
наверняка обусловлено тем, что имя файла превысило 8 символов,
вообще манера старых программистов не называть файлы русскими буквами и делать имя длиннее 8 символов (отрыжка DOS) далеко не плоха, не находите ?
 
K

kaa

<!--QuoteBegin-any-oz+6:12:2007, 18:51 -->
<span class="vbquote">(any-oz @ 6:12:2007, 18:51 )</span><!--QuoteEBegin-->Смотрю в Отладчике:
КаталогВыгрузки = "C:\Temp\"
ФС.УстТекКаталог(КаталогВыгрузки) = Ошибка в выражении!
Файл = "682C0612.DBF"
"1"+Файл = 1682С0612.DBF
ФС.ПереименоватьФайл(Файл,"1"+Файл,1) = Ошибка в выражении!
[snapback]88666" rel="nofollow" target="_blank[/snapback]​
[/quote]


КаталогВыгрузки = "C:\Temp\"
Файл = "682C0612.DBF"
"1"+Файл = 1682С0612.DBF
ФС.ПереименоватьФайл(КаталогВыгрузки+"\"+Файл,"1"+Файл,1);
а так ?
 
V

vitfil

А чем мой вариант плох? Принимаю любую критику ;)
 
J

jj_mail

а файл с исходным именем вобще-то существует по указанному пути ?
 
K

kaa

мля
Код:
//*******************************************
Процедура СоздатьФайл()
Если ПустоеЗначение(Каталог)=1 Тогда
Предупреждение("Не выбран каталог выгрузки!",20);
Возврат;
КонецЕсли;


ДБФ = СоздатьОбъект("XBase"); 
ДБФ.ДобавитьПоле("CODE", 1, 19, 3);
ДБФ.ДобавитьПоле("NAME", 2, 25, 0);	
ДБФ.СоздатьФайл(Каталог+"\mydb.dbf");
ДБФ.Записать();
ДБФ.ЗакрытьФайл();	
КонецПроцедуры
//******************************************************************************/
Процедура Переименовать()
ФС.УстТекКаталог(СокрЛП(Каталог));
Результат = ""; 
Результат = ФС.НайтиПервыйФайл("*.DBF*");
Если Результат<>"" Тогда
ФС.ПереименоватьФайл(СокрЛП(Каталог)+"\"+Результат,СокрЛП(Каталог)+"\1"+Результат,1);
КонецЕсли;
КонецПроцедуры
//******************************************************************************/
Процедура ПриНачалеВыбораЗначения(Элемент)
Если Элемент="Каталог" Тогда
Путь="";
Если ФС.ВыбратьКаталог(Путь,"Выберете каталог",20)=1 Тогда
Каталог=Путь;
КонецЕсли;
КонецЕсли;	 
КонецПроцедуры

ВСЕ РАБОТАЕТ!!!
 
A

any-oz

мля
Код:
//*******************************************
Процедура СоздатьФайл()
Если ПустоеЗначение(Каталог)=1 Тогда
Предупреждение("Не выбран каталог выгрузки!",20);
Возврат;
КонецЕсли;


ДБФ = СоздатьОбъект("XBase"); 
ДБФ.ДобавитьПоле("CODE", 1, 19, 3);
ДБФ.ДобавитьПоле("NAME", 2, 25, 0);	
ДБФ.СоздатьФайл(Каталог+"\mydb.dbf");
ДБФ.Записать();
ДБФ.ЗакрытьФайл();	
КонецПроцедуры
//******************************************************************************/
Процедура Переименовать()
ФС.УстТекКаталог(СокрЛП(Каталог));
Результат = ""; 
Результат = ФС.НайтиПервыйФайл("*.DBF*");
Если Результат<>"" Тогда
ФС.ПереименоватьФайл(СокрЛП(Каталог)+"\"+Результат,СокрЛП(Каталог)+"\1"+Результат,1);
КонецЕсли;
КонецПроцедуры
//******************************************************************************/
Процедура ПриНачалеВыбораЗначения(Элемент)
Если Элемент="Каталог" Тогда
Путь="";
Если ФС.ВыбратьКаталог(Путь,"Выберете каталог",20)=1 Тогда
Каталог=Путь;
КонецЕсли;
КонецЕсли;	 
КонецПроцедуры

ВСЕ РАБОТАЕТ!!!
Всех благодарю!
Дело было в том, что перед переименованием я не закрывала файл dbf ;)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!