Копирование файла без запроса потверждения замены.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Тест_Тестович
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 29.08.2006 (Вт) 8:17

Копирование файла без запроса потверждения замены.

Сообщение Тест_Тестович » 30.08.2006 (Ср) 11:10

Есть задача - обновлять версию некоторого файла, т.е. копировать файл в директорию, в которой уже существует файл с тем же именем. В VB вроде как для этого имеется FileCopy, но при её применении возникает запрос подтверждения типа "Вы точно хотите заменить существующий файл?" Собственно вопрос в том, как этот запрос подавить. Т.е. необходимо действие, аналогичное коду командной строки xcopy source destination /y . Сколько смотрел информации по FileCopy, у этой команды только 2 параметра - source и destination - ни о каких доп. ключах более не говорится.
Если в FileCopy это обойти нельзя, то существует ли в VB возможность запускать из кода те же bat- и cmd- файлы (в которых собственно и будет xcopy source destination /y )?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 30.08.2006 (Ср) 11:18

1. Kill перед копированием
2. FSO
Лучший способ понять что-то самому — объяснить это другому.

Тест_Тестович
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 29.08.2006 (Вт) 8:17

Сообщение Тест_Тестович » 30.08.2006 (Ср) 11:21

Antonariy писал(а):1. Kill перед копированием

Про Kill я думал, но не будет ли с ней той же проблемы, т.е. запроса "Вы точно согласны удалить существующий файл?"

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.08.2006 (Ср) 11:31

Не будет.
Lasciate ogni speranza, voi ch'entrate.

zan
Бывалый
Бывалый
 
Сообщения: 224
Зарегистрирован: 24.08.2006 (Чт) 4:55

Сообщение zan » 30.08.2006 (Ср) 12:36

А если у файла только чтение?

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 30.08.2006 (Ср) 12:43

А проверить?
Лучший способ понять что-то самому — объяснить это другому.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 30.08.2006 (Ср) 12:57

Кажись точно справку и MSDN отменили.... Ужос! Kill будет вызывать исключение только в трех случаях: Если файл открыт, если файла такого нет и если у процесса нет к нему доступа. Никаких сообщений типа "А Вы уверены...." выдаваться не будет. Название функции Kill явно наводит на мысли о полной ее бескомпромисности
Весь мир матрица, а мы в нем потоки байтов!

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 30.08.2006 (Ср) 15:04

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


Astalavista, baby :!:

Serge Gavrilov
Начинающий
Начинающий
 
Сообщения: 19
Зарегистрирован: 26.01.2006 (Чт) 11:35

Сообщение Serge Gavrilov » 30.08.2006 (Ср) 17:13

до кучи
3
Declare Function apiCopyFile Lib "kernel32" Alias "CopyFileA" ( _
ByVal lpExistingFileName As String, _
ByVal lpNewFileName As String, _
ByVal bFailIfExists As Long) As Long

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 30.08.2006 (Ср) 22:27

Код: Выделить всё
Public Sub ForceKill(FileName As String)
On Error Resume Next
SetAttr FileName, vbNormal
Kill FileName
End Sub

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 31.08.2006 (Чт) 8:22

Интересно :)
У меня FileCopy никогда никаких запросов не вызывал а просто заменял файл, если надо. Что это надо сделать с VB, чтоб он выдавал такие запросы :shock: :?: Может еще он выдает запросы типа вы точно хотите присвоить значение переменной A переменной B? :D

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 31.08.2006 (Чт) 9:10

Kill Tarantul.
Уж больно, очень больно!

~Ilya~
Новичок
Новичок
 
Сообщения: 45
Зарегистрирован: 09.03.2006 (Чт) 14:34

Сообщение ~Ilya~ » 31.08.2006 (Чт) 11:43

У меня тоже FileCopy не требует никаких подтверждения , если нужно перезаписать файл

kpblc
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 05.05.2006 (Пт) 15:42
Откуда: С.-Петербург

Сообщение kpblc » 31.08.2006 (Чт) 11:49

А если все же использовать FileSystemObject, и его метод CopyFile? Там есть третий необязательный параметр - перезаписывать или нет файл.
object.CopyFile source, destination[, overwrite]

Tarantul
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 13.12.2004 (Пн) 16:39
Откуда: IUnknown

Сообщение Tarantul » 31.08.2006 (Чт) 15:51

Kill Tarantul.
Уж больно, очень больно!

Прошу яснее выражаться. Я что, что-то неправильно написал?

|kerish|
Постоялец
Постоялец
 
Сообщения: 831
Зарегистрирован: 22.10.2004 (Пт) 0:31

Сообщение |kerish| » 31.08.2006 (Чт) 20:44

kpblc А на хрен нужен FSO? Все можно сделать самому без лишнего геммороя и без подключения сторонних библиотек.

kpblc
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 05.05.2006 (Пт) 15:42
Откуда: С.-Петербург

Сообщение kpblc » 01.09.2006 (Пт) 7:48

Я, конечно, далеко не профи, но вот работает же (на пустом проекте):
Код: Выделить всё
  Dim oFSO As Variant
  Set oFSO = CreateObject("Scripting.FileSystemObject")
  oFSO.createfolder "c:\123"

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.09.2006 (Пт) 10:17

kpblc, а какая разница, что работает у тебя, если этого может не быть в системе?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

kpblc
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 05.05.2006 (Пт) 15:42
Откуда: С.-Петербург

Сообщение kpblc » 01.09.2006 (Пт) 10:28

> GSerg : А это как - может не быть? Расскажи, если не трудно.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.09.2006 (Пт) 10:29

Ну ты создаёшь объект Scripting.FileSystemObject, не задумываясь о том, что в системе его может быть не установлено?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

kpblc
Новичок
Новичок
 
Сообщения: 42
Зарегистрирован: 05.05.2006 (Пт) 15:42
Откуда: С.-Петербург

Сообщение kpblc » 01.09.2006 (Пт) 10:38

> GSerg : Ну как он может быть не установлен? Честно говоря, я не видел систем, на которых попытка создания Scriptinf.FileSystemObject выдавала бы ошибку. Может быть, у меня опыта мало, охотно признаю.

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 01.09.2006 (Пт) 11:00

kpblc писал(а):> GSerg : Ну как он может быть не установлен? Честно говоря, я не видел систем, на которых попытка создания Scriptinf.FileSystemObject выдавала бы ошибку. Может быть, у меня опыта мало, охотно признаю.

Еще антивирусы недолюбливают скриптовую активность

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 01.09.2006 (Пт) 12:44

GSerg писал(а):Ну ты создаёшь объект Scripting.FileSystemObject, не задумываясь о том, что в системе его может быть не установлено?
Если не ошибаюсь, FSO в комплект даже 98х входит.
Лучший способ понять что-то самому — объяснить это другому.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 01.09.2006 (Пт) 15:13

На 95й прокатило.

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 01.09.2006 (Пт) 16:16

Видимо, установлен Internet Explorer 4 или выше. Также вариант: просто поставлен WSH (Windows Script Host).
Моду создают модоки, а распространяют модозвоны.

Al Khamid
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 274
Зарегистрирован: 11.02.2004 (Ср) 10:00
Откуда: Москва, Ховрино

Сообщение Al Khamid » 02.09.2006 (Сб) 9:42

Последний раз редактировалось Al Khamid 17.11.2007 (Сб) 14:42, всего редактировалось 1 раз.
"Время пришло..." ©

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 02.09.2006 (Сб) 13:05

Флаг FOF_SILENT = &H4 спасет отца российской демократии.
Моду создают модоки, а распространяют модозвоны.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 124

    TopList