Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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-файлов((((. Ожидаемый результат получил.
Почему не получилось с функцией Shell? Как можно сделать, чтоб получилось? |
|
Вернуться к началу |
|
|
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-файл пишется... |
|
Вернуться к началу |
|
|
Вячеслав Гость
|
Добавлено: Пт Фев 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-функциях большое спасибо! |
|
Вернуться к началу |
|
|
|