Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Батник не видит файл сразу после распаковки sfx архива (http://forum.oszone.net/showthread.php?t=326402)

Black_SOKOL 30-04-2017 14:31 2733213

Батник не видит файл сразу после распаковки sfx архива
 
Здравствуйте. Проблема с bat файлом после распаковки sfx архива. в папке работает на ура, при запуске после распаковки, то пишет не найден фаил. Мозг уже сломал, но ни в какую.

Iska 30-04-2017 14:35 2733214

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

Black_SOKOL 30-04-2017 15:32 2733222

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

mwz 30-04-2017 15:46 2733224

Цитата:

Цитата Black_SOKOL
тогда он не находит файла программы. »

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

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

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

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

Black_SOKOL 30-04-2017 15:54 2733225

Вот об этом думал, но не знал как описать. Запомню, да и можете все команды батников скинуть?

mwz 30-04-2017 16:01 2733226

Цитата:

Цитата Black_SOKOL
все команды батников »

https://yandex.ru/search/?text=%D1%8...0%B4%20cmd.exe

PS
Вас же скорее интересует Описание основных возможностей сценариев командной строки

Iska 30-04-2017 16:48 2733230

Ошибок полная куча.

Код:

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?!

Цитата:

Цитата mwz
сделать
START %~dp0AVZ.EXE »

Я бы даже сказал:
Код:

start "" "%~dp0AVZ.EXE"
— в общем случае.


Время: 22:44.

Время: 22:44.
© OSzone.net 2001-