Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Shell function...

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Alien



Зарегистрирован: 22.12.2001
Сообщения: 25
Откуда: Сергиев Посад

СообщениеДобавлено: Чт Фев 20 2003 14:53    Заголовок сообщения: Shell function... Ответить с цитатой

Следующая процедура перекодирует (из DOS в WIN) все файлы в подкаталоге "\SrcData\" папки SrcFldr, помещая их в подкаталог

"\OutData\" той же папки:

Sub RecodeData()
Dim strBatFile As String, RetVal As Long
For Each WrkFile In SrcFldr.Files
strBatFile = "trt.exe 2 " & "SrcData\" & WrkFile.Name & " " & "OutData\" & WrkFile.Name
Open SrcFldr.Path & "\strt.bat" For Output As #1
Print #1, strBatFile
Close #1
RetVal = Shell(SrcFldr.Path & "\strt.bat", vbHide)
Next
End Sub

процедура срабатывает, в папке "\OutData\" пусто...

пришлось через одно место:

Public Sub RecodeData()
Dim strBatFile As String, i As Long
i = 1
For Each WrkFile In SrcFldr.Files
strBatFile = "trt.exe 2 " & "SrcData\" & WrkFile.Name & " " & "OutData\" & WrkFile.Name
Open SrcFldr.Path & "\strt" & Ltrim(Str(i)) & ".bat" For Output As #1
Print #1, strBatFile
i = i + 1
Close #1
Next
End Sub

а потом просто вручную прокликал все 85 bat-файловSad((((. Ожидаемый результат получил.

Почему не получилось с функцией Shell? Как можно сделать, чтоб получилось?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Dmitry.Karpov http://prof
Гость





СообщениеДобавлено: Чт Фев 20 2003 20:30    Заголовок сообщения: Делать BAT-файл и запускать его - дурной тон Ответить с цитатой

Сделай внутри цикла что-то типа
Shell("trt.exe 2 " & "SrcData\" & WrkFile.Name & " " & "OutData\" & WrkFile.Name)

А еще посмотри создаваемый тобой BAT-файл - похоже, там все записалось без перевода строкИ.
Вернуться к началу
Alien



Зарегистрирован: 22.12.2001
Сообщения: 25
Откуда: Сергиев Посад

СообщениеДобавлено: Пт Фев 21 2003 07:53    Заголовок сообщения: Re: Делать BAT-файл и запускать его - дурной тон Ответить с цитатой

CTRL+C - CTRL+V:

Public Sub RecodeData()
Dim strBatFile As String, RetVal As Long, i As Long
i = 1
For Each WrkFile In SrcFldr.Files
strBatFile = "trt.exe 2 " & "SrcData\" & WrkFile.Name & " " & "OutData\" & Mid(WrkFile.Name, 2)
Open strPath & "strt" & LTrim(Str(i)) & ".bat" For Output As #1
Print #1, strBatFile
i = i + 1
Close #1
'RetVal = Shell(strPath & "strt" & LTrim(Str(i)) & ".bat", vbHide)
Next
End Sub

где strPath-путь к папке SrcFldr (с бэкслэшем на конце). Вот вариант (без bat-файла), который точно так же не сработал:

Public Sub RD()
Dim strBatFile As String, RetVal As Long, i As Long
For Each WrkFile In SrcFldr.Files
RetVal = Shell(strPath & "trt.exe 2 " & "SrcData\" & WrkFile.Name & " " & "OutData\" & Mid(WrkFile.Name, 2), vbHide)
Next
End Sub

Перевод строки в bat-файл пишется...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Вячеслав
Гость





СообщениеДобавлено: Пт Фев 21 2003 11:18    Заголовок сообщения: Re: Shell function... Ответить с цитатой

Это не будет работать!!!
как говорит наш известный политик "совершенно понятно"

Есть функции API CharToOemBuff OemToCharBuff
DOS в WIN и обратно
Дальше надеюсь понятно
Вернуться к началу
Alien



Зарегистрирован: 22.12.2001
Сообщения: 25
Откуда: Сергиев Посад

СообщениеДобавлено: Вт Фев 25 2003 06:12    Заголовок сообщения: Re: Shell function... Ответить с цитатой

>Это не будет работать!!!
>как говорит наш известный >политик "совершенно понятно"

Прошу прощения, но мне непонятно - почему не будет работать. Из имеющегося у меня офисовского хелпа не понятно, почему, например, вышеприведенный пример не работает, а такй - работает:
Private Sub Form_Load()
Dim i As Long
i = Shell("net send 236-2 !", vbHide)
End Sub

За сведения о API-функциях большое спасибо!Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...