:: Visual Foxpro, Foxpro for DOS
Как проверить существование файла из FPD 2.6
Simple777
Автор

Сообщений: 33855
Дата регистрации: 05.11.2006
Надо проверить, допустим, наличие файла myfile.txtd

Функция adir() не сможет определить наличие такого файла - 4 знака в расширении ей не по зубам.

Конечно, можно использовать внешний виндовый DIR, перенаправить результат команды в текстовый файл, потом этот файл загнать в таблицу по APPEND FROM SDF и проверить наличие имени myfile.txtd и т. д. Или можно сделать копию файла myfile.txtd виндовым XCOPY через RUN (к слову сказать, myfile.txtd размером в 30 кБ примерно), а потом копию переименовать в файл с расширением с тремя символами и т.д.

Однако эти способы выглядят очень уж громоздкими. А нет ли какого-нибудь способа попроще?
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Программа написанная под старые версии DOS (6.22 и ранее) не может работать с именами файлов отличными от 8.3 формата. FPD, насколько я в курсе, именно такая программа и есть. В настоящем DOS (например 7.10 из состава Windows95, или новые DR-DOS) и его VFAT файловой системе, помимо длинных имён всегда хранятся и их 8.3 версии. Точнее даже сказать что 8.3 имя является основным, а длинное - необязательным расширением для этих ОС. Естественно под современной WinNT платформой используются другие файловые системы, и там поддержка 8.3 имён вполне может быть и отключена.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Simple777
Автор

Сообщений: 33855
Дата регистрации: 05.11.2006
Да это всё понятно. Вопрос лишь в том - есть ли более удобный способ узнать при помощи командной строки Windows о существовании файла? Тут еще вот какая заморочка. Команда XCOPY может копировать, но не может при копировании переименовывать. Точнее говоря, XCOPY в этом случае не понимает, чего от нее хотят: то ли скопировать файл в другую папку, то ли при копировании выходной файл переименовать, и поэтому XCOPY задает уточняющий вопрос и ждет ответа. Нужный ответ не получается заслать через входной поток <

Команда же REN может переименовать, но в случае отсутствия входного файла пишет об этом сообщение, и хотя при помощи перенаправления сообщения на > Nul сообщения не видно, но в FPD текущий экран сдвигается на одну строку вверх. С этим тоже можно бороться с помощью SAVE SCREEN и RESTORE SCREEN, но некоторое мельтешение на экране всё равно заметно.
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
В батнике исполняемом cmd (если уж речь про винду, тем паче современную) наличие файла проверить несложно - if exist
"заслать" символ для xcopy можно через echo F | xcopy ... вот только xcopy не предназначен для переименования файлов... Да и вывод ненужный на экран будет по любому.
Просто копировать одиночный файл под новым именем - хватит и банального copy.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Simple777
Автор

Сообщений: 33855
Дата регистрации: 05.11.2006
Да вроде как виндовая COPY не может работать с файлами не в формате имени 8.3 По крайней мере в WIN XP этого сделать не получалось, и приходилось использовать XCOPY.

Насчет засласть ECHO F в команду XCOPY - в смысле так?

XCOPY myfile.txtd myfile.txt < ECHO F

Проверю (сейчас прямо не могу), но вариант

XCOPY myfile.txtd myfile.txt < F

не работает.

Насчет If exist в батнике я знаю еще по DOS, но это надо будет сначала сгенерировать этот батник через макроподстановку в FPD, поскольку в маршруте в файлу будет присутствовать ММГГГГ отчетного периода, что тоже известная "возня". К тому же придется тогда "городить" запись результата проверки существования файла еще в какой-то файл, потом тот файл открывать и т.п.



Исправлено 2 раз(а). Последнее : Simple777, 07.07.18 14:16
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Simple777
Да вроде как виндовая COPY не может работать с файлами не в формате имени 8.3
С чего бы это? Насколько я помню, даже "настоящая досовская" команда из command.com доса версии 7.1 умеет работать с LFN.

Simple777
Насчет засласть ECHO F в команду XCOPY - в смысле так?
В смысле буквально как я написал
echo F | xcopy src dest

Simple777
Насчет If exist в батнике я знаю еще по DOS, но это надо будет сначала сгенерировать этот батник через макроподстановку в FPD, поскольку в маршруте в файлу будет присутствовать ММГГГГ отчетного периода, что тоже известная "возня". К тому же придется тогда "городить" запись результата проверки существования файла еще в какой-то файл, потом тот файл открывать и т.п.
Не понял зачем какие-то файлы "городить" и при чём тут макро?
Батник генерируется (раз уж он не "статический" по содержимому) как простой текстовый файл - да хоть бы FOPEN/FPUTS/FCLOSE, запускается обычным run-ом.


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Глянь тут, может поможет


------------------
Что-то с памятью моей стало, всё что было не со мной- помню.
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Simple777
Автор

Сообщений: 33855
Дата регистрации: 05.11.2006
Насчет ECHO F понял - проверю.

Насчет батника. Я имел в виду, что, допустим, If exist в батнике устанавливает, что файл существует, но ведь эту инфу надо еще передать в FPD, и для этого придется сгенерировать, видимо, еще какой-то файл, в который занести, допустим, 1 или 0 (если файл не существует).

Насчет команды COPY. Вспомнил, с чем была связана проблема. После добавления макросов в Worde 2007 и старше макросы сохраняются в NORMAL.DOTM

В рабочей папке проекта я храню копию этого NORMAL.DOTM с тем, чтобы в случае сбоя в Worde и сброса NORMAL.DOTM в начальное состояние (без добавленных мной макросов) можно было копию NORNAL.DOTM отправить в заранее известную папку. Команда COPY почему-то не смогла копировать NORMAL.DOTM (хотя NORMAL.DOT для версии WORD 2003 COPY копирует без проблем), и поэтому пришлось использовать для копирования NORMAL.DOTM команду WINDOWS XCOPY



Исправлено 1 раз(а). Последнее : Simple777, 07.07.18 15:23
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Simple777
но ведь эту инфу надо еще передать в FPD, и для этого придется сгенерировать, видимо, еще какой-то файл, в который занести, допустим, 1 или 0

Лишние движение. Наличие или отсутствие какого либо файла уже достаточный флаг для FPD. Если ECHO вернет пустую строку, то и файл не сформирует отчетный насколько я помню.


------------------
Что-то с памятью моей стало, всё что было не со мной- помню.
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Вообще, если я не ошибаюсь, где то в "Решениях" была приблуда .fll для работы с длинными именами из под FPD. Но не утверждаю точно, может быть это я где то на просторах встречал и качал. Точно знаю, что такое есть в природе, так как лет 11-12 назад сам использовал по месту тогдашней работы.


------------------
Что-то с памятью моей стало, всё что было не со мной- помню.
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Еще в помощь


------------------
Что-то с памятью моей стало, всё что было не со мной- помню.
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Simple777
Автор

Сообщений: 33855
Дата регистрации: 05.11.2006
Спасибо! До чего только народ не додумался в батниках!

Но обойдемся без батников.
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Косоворотка? ;)


------------------
Что-то с памятью моей стало, всё что было не со мной- помню.
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Simple777
Автор

Сообщений: 33855
Дата регистрации: 05.11.2006
Восьмиклинка!


А всё-таки раньше нравы были мягче...

Igor Korolyov

Hi Crispy!

Сейчас такого на форуме не услышишь...
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Для FPD нужны не fll а plb - там другая система создания "расширений фокса". И если fll в принципе можно в любой современной VisualStudio собрать, то с plb всё гораздо сложнее - там вроде как отдельный сишный компилятор поставлялся в составе этой самой LCK или как её называли...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Igor Korolyov
Для FPD нужны не fll а plb - там другая система создания "расширений фокса". И если fll в принципе можно в любой современной VisualStudio собрать, то с plb всё гораздо сложнее - там вроде как отдельный сишный компилятор поставлялся в составе этой самой LCK или как её называли...

Честно, не припомню уже точно, может и приврал чего не со зла, а по старости ума

Simple777
А всё-таки раньше нравы были мягче...
;)
Долбо.бов было меньше, бо пиз.или крепко, а в авторитете был интелект, а не количество постов и зелененьких свистюлек И уж точно не в наличии опыта проктологических изысканий


------------------
Что-то с памятью моей стало, всё что было не со мной- помню.




Исправлено 1 раз(а). Последнее : Chemberzhy, 07.07.18 16:59
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Simple777
Автор

Сообщений: 33855
Дата регистрации: 05.11.2006
Да помню твою пламенною речь про свистюлек и хомячков, но увы...
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Simple777
Автор

Сообщений: 33855
Дата регистрации: 05.11.2006
Кагбы по мотивам топика...

[attachment 29660 forever.jpg]

FPD forever!..

Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Simple777
Автор

Сообщений: 33855
Дата регистрации: 05.11.2006
Такой вариант проверил - работает без проблем:

!echo f|xcopy MYFILE.txtd MYFILE.txt /y >XXX
Ratings: 0 negative/0 positive
Re: Как проверить существование файла из FPD 2.6
Crispy

Сообщений: 18571
Дата регистрации: 16.05.2005
Simple777
А нет ли какого-нибудь способа попроще?

Дык эта. \m/ Есть! Есть такая пагтия! \m/

Попробуй вот так:
* для: myfile.txtd
? FILE('MYFILE~1.TXT')

И возможно будет тебе счастье. [sm128]


------------------
В действительности все иначе, чем на самом деле.
                                      (Антуан де Сент-Экзюпери)
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 28 (Гостей: 28)

© 2000-2024 Fox Club 
Яндекс.Метрика