PDA

Показать полную графическую версию : [решено] Батник не видит файл сразу после распаковки sfx архива


Black_SOKOL
30-04-2017, 14:31
Здравствуйте. Проблема с bat файлом после распаковки sfx архива. в папке работает на ура, при запуске после распаковки, то пишет не найден фаил. Мозг уже сломал, но ни в какую.

Iska
30-04-2017, 14:35
Black_SOKOL, разговор ни о чём. Где пакетный файл? Где самораспаковывающийся архив? В каких условиях происходит описанное?

Black_SOKOL
30-04-2017, 15:32
Сейчас сброшу. install. bat - https://yadi.sk/d/mylMnISC3HVWLg
сам архив - https://yadi.sk/d/gzcQ7Rhs3HVWNh
Так из папки всё отлично работает, но запускаю sfx и само распаковывающийся архив запускает батник, тогда он не находит файла программы.

mwz
30-04-2017, 15:46
тогда он не находит файла программы. »

Не прописаны пути в батнике. А ведь рабочая папка батника не обязана совпадать с той, в которой лежит он сам.

Надо вместо
START AVZ.EXE
сделать
START %~dp0AVZ.EXE

(слэш после %~dp0 не нужен) — и батник будет искать файл именно в том каталоге, из которого запущен сам. Независимо от расположения и имени этого каталога.

В конце батника — то же самое.

Black_SOKOL
30-04-2017, 15:54
Вот об этом думал, но не знал как описать. Запомню, да и можете все команды батников скинуть?

mwz
30-04-2017, 16:01
все команды батников »
https://yandex.ru/search/?text=%D1%81%D0%BF%D0%B8%D1%81%D0%BE%D0%BA%20%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B5%D0%BD%D0%BD%D0%B8% D1%85%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%20cmd.exe

PS
Вас же скорее интересует Описание основных возможностей сценариев командной строки (http://dl.gsu.by/doc/use/ntcmds.htm)

Iska
30-04-2017, 16:48
Ошибок полная куча.

Path=C:\Users\%UserName%\Desktop\
1. Диск c: может не существовать.
2. Каталог Users на c: может не существовать.
3. Работа может идти в ОС ниже Vista. Отсюда — не Users, и не Desktop.
4. Имя каталога профиля пользователя может отличаться от имени пользователя.
Посему — %temp%, %UserProfile%, %AppData%. В данном случае — вообще ничего не задавать, пусть ставится в %ProgramFiles%, мы же вирусы собираемся искать, али что?!

Setup=C:\Users\%UserName%\Desktop\avz4\install.bat
Это:
Setup=<программа>

После удачного извлечения файлов SFX-модуль попытается запустить указанную <программу>. При этом перед запуском <программы > текущей папкой будет сделана та, в которую были извлечены файлы. Если в имени программы есть пробелы, то оно должно быть взято в кавычки.
— кому написано? А если пользователь укажет иной путь при распаковке — что тогда?!
Setup=".\avz4\install.bat"
Теперь по самому install.bat. Что Вы хотите получить? Что такое %SYSTEMDISK%, откуда она взялась, что в ней? Зачем Вы пытаетесь асинхронно вызвать avz.exe из того каталога, в котором его нет? Зачем без конца крутите цикл без внутренней паузы — чтобы тупо полностью загрузить одно ядро, дабы avz лишнего не досталось?! Для чего параметр /wait был придуман, а? Внутри архива install.bat отличается иным содержимым, которое ещё краше (но там хоть раз /wait есть), во всяком случае, понять, для чего нужно внутри того же цикла ожидания:
dir %USERNAME% /s /b | find "avz.exe">nul&& goto loop1
— не смог осмыслить. Зачем там два вызова AVZ с двумя скриптами, когда вполне можно обойтись одним?! Зачем там вообще пакетный файл, когда вместо него просто указываем вызов самого AVZ?!

сделать
START %~dp0AVZ.EXE »
Я бы даже сказал:
start "" "%~dp0AVZ.EXE"
— в общем случае.




© OSzone.net 2001-2012