Что нового

Процессы рабочая папка для DOS команд в RunWait

Tosyk

Новичок
Сообщения
204
Репутация
0
в виндовс обычная команда tool.exe <file.txt> работает и производит нужные файлы в папке рядом с файлом file.txt, однако в автоите при запуске того же процесса на конкретные файлы нужные файлы производятся в папке со скриптом, а мне надо рядом с файлом file.txt, что я делаю не так? подскажите пожалуйста

Код:
Global $sIniFile = @ScriptDir & '\' & 'settings.ini'
Local $sFolderRes = IniRead ($sIniFile, 'Setting', 'Folder', @ScriptDir)

Local $sExePath, $sSourceFileXXX, $sRunWait

    $sExePath = $sFolderRes & '\' & 'tool.exe'
    $sSourceFileXXX = $sFolderRes & '\' & 'file.txt'

    $sRunWait = '"' & $sExePath & " " & $sSourceFileXXX & '"'
    Global $iReturn = RunWait(@ComSpec & ' /c ' & $sRunWait, '', @SW_HIDE)
    ConsoleWrite("Full converting path: " & $sRunWait & @LF)


файл сетингов:
Folder='D:\_WORK'
 

Diamond

Меценат
Меценат
Сообщения
15
Репутация
1
Попробуйте для RunWait указать рабочий каталог, думаю что дело в этом.
Сообщение автоматически объединено:

Заметил что используется макрос @ComSpec, по моему он здесь лишний.
 
Последнее редактирование:

Diamond

Меценат
Меценат
Сообщения
15
Репутация
1
Это второй параметр в функции, у Вас там указана пустая строка.
Код:
Global $iReturn = RunWait($sRunWait, $sFolderRes, @SW_HIDE)
 
Автор
Tosyk

Tosyk

Новичок
Сообщения
204
Репутация
0
Это второй параметр в функции, у Вас там указана пустая строка.
Код:
Global $iReturn = RunWait($sRunWait, $sFolderRes, @SW_HIDE)
а как же сама дос команада выполнения?

блин, протупил, спасибо! сейчас попробую
 

Diamond

Меценат
Меценат
Сообщения
15
Репутация
1
А RunWait разве не самодостаточна?
Сообщение автоматически объединено:

Вы запускаете RunWait чтобы та в свою очередь запустила cmd.exe который запустит tool.exe. Зачем такие сложности если можно запустить tool.exe сразу. Или я что-то не понимаю?
 
Последнее редактирование:
Автор
Tosyk

Tosyk

Новичок
Сообщения
204
Репутация
0
Это второй параметр в функции, у Вас там указана пустая строка.
Код:
Global $iReturn = RunWait($sRunWait, $sFolderRes, @SW_HIDE)
вообще ничего не происходит, хотя в консоли:
Код:
>"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "M:\_DEVELOPING\tools\11.au3"
Full converting path: "D:\_r\_WORK\tool.exe D:\_r\_WORK\file.txt"
>Exit code: 0    Time: 0.05368
Сообщение автоматически объединено:

Вы запускаете RunWait чтобы та в свою очередь запустила cmd.exe который запустит tool.exe. Зачем такие сложности если можно запустить tool.exe сразу. Или я что-то не понимаю?
сам я не очень понимаю в коде, у меня была эта строчка, которая отлично работала несколько лет с разными вариациями до сегодняшнего дня. думаю, что можно запускать и напрямую
 

Diamond

Меценат
Меценат
Сообщения
15
Репутация
1
А до этого точно все работало? Просто Я не представляю что должна делать tool.exe...
Извините, из-за склейки сообщений не увидел ответ.
 
Автор
Tosyk

Tosyk

Новичок
Сообщения
204
Репутация
0
А до этого точно все работало? Просто Я не представляю что должна делать tool.exe...
tool.exe читает file.txt и на основании найденного ищет "другие файлы" в той же папке, после чего выдаёт новые файлы
если кинуть file.txt на tool.exe в папке с "другими файлами" то процесс проходит нормально
но если кинуть file.txt из любого другого места на tool.exe то процесс работает не правильно

сейчас у меня и file.txt и tool.exe лежат в правильной папке с "другими файлами", но скрипт лежит отдельно, вообще на другом диске
такое ощущение, что несмотря на точное указание строчки кода на те самые file.txt и tool.exe операция происходит как будто file.txt лежит в папке со скриптом

p.s.: я пытаюсь разобраться с этим простым скриптом что я запостил в персом сообщении, чтобы его встроить в более сложный скрипт с циклами: в нём я беру несколько файлов file.txt, file1.txt, file2.txt итд
 

Diamond

Меценат
Меценат
Сообщения
15
Репутация
1
Попробуйте заключить путь к текстовому файлу в кавычки
Код:
$sSourceFileXXX = '"' & $sFolderRes & '\' & 'file.txt"'
 
Автор
Tosyk

Tosyk

Новичок
Сообщения
204
Репутация
0
если использовать
Global $iReturn = RunWait($sRunWait, $sFolderRes, @SW_HIDE)
и заключение в скобки то всё работает
 

Diamond

Меценат
Меценат
Сообщения
15
Репутация
1
Значит не работало из-за того что путь содержал пробелы.
 
Автор
Tosyk

Tosyk

Новичок
Сообщения
204
Репутация
0
пробелов точно не было, сейчас попробую встроить в циклы
спасибо!
Сообщение автоматически объединено:

всё работает в циклах, спасибо большое!
не понятно зачем мне вообще было использовать @ComSpec & ' /c '
 
Последнее редактирование:
Верх