Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Скомпилированный из "батника" exe работает только в папке с исходниками.

Ответить
Настройки темы
CMD/BAT - [решено] Скомпилированный из "батника" exe работает только в папке с исходниками.

Старожил


Сообщения: 216
Благодарности: 15

Профиль | Отправить PM | Цитировать


Доброго времени суток всем!
Может у кого была подобная проблема, что посоветуете.
Написал батник для замены нужного текста в различных текстовых файлах. В основе консольная утилита nhrt (nhreplace)
Для удобства пользования скомпилировал программой Quick Batch File Compiler исполняемый exe файл.
Но вот незадача, что батник, что exe нормально отрабатывают только в папке с исходниками. С других папок запускаются, но половина команд не обрабатывается. Что-то неправильно с путями.
Сам bat файл:
Код: Выделить весь код
@echo off
chcp 1251 >nul
"%MYFILES%\url.vbs"
@echo move /Y J:\Download\Compressed\nhrt\plist_tv.m3u "%MYFILES%"
cd "%MYFILES%"
start /wait "" "%MYFILES%\nhrt.exe" -list:delete_group.txt plist_tv.m3u
start /wait "" "%MYFILES%\nhrt.exe" -list:replace_list.txt plist_tv.m3u
TIMEOUT /T 5 /NOBREAK
@echo move /Y "C:\Users\Uragan66\AppData\Local\plist_tv.m3u J:\Download\Compressed\nhrt"
exit
Первая часть работает из любой папки, плейлист скачивается и копируется в нужную папку. Но вот команды с nhrt работают только в папке с исходниками.
Подскажите, пожалуйста, что в нём не так ?

Отправлено: 22:08, 10-05-2019

 

Ветеран


Сообщения: 1274
Благодарности: 564

Профиль | Отправить PM | Цитировать


если код выше полный, то где назначение переменной %MYFILES% ?
если неполный, то вижу что на разных дисках работа идет, а командой "cd" можно переходить только в пределах текущего диска, для перехода и с учетом диска надо использовать ключ /d, вот так: cd /d "Диск:\Папка"
Это сообщение посчитали полезным следующие участники:

Отправлено: 22:53, 10-05-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Старожил


Сообщения: 216
Благодарности: 15

Профиль | Отправить PM | Цитировать


Цитата:
где назначение переменной %MYFILES% ?
alpap, переменную %MYFILES% использует только компилятор Quick Batch File Compiler, так для него именуется папка C:\Users\User\AppData\Local, в неё временно помещаются файлы упакованные в исполняемый exe.
cd /d "Диск:\Папка" пробовал - безрезультатно. Вернее из ком. строки работает, если использовать путь C:\Users\User\AppData\Local, из скомпилированного exe не хочет.

Отправлено: 23:40, 10-05-2019 | #3


Ветеран


Contributor


Сообщения: 2708
Благодарности: 1684

Профиль | Отправить PM | Цитировать


Uragan66, а если попробовать вместо Cd после Chcp
Pushd "%MYFILES%\"
и, соответственно, далее в коде убрать все поминания на %MYFILES%\
Кстати, а где находится утилита nhrt.exe? Она тоже распаковывается в эту злополучную папку %myfiles% ? Она там присутствует?
Может быть, надо указать полный реальный путь к ней? Или скопировать её в папку прописанную в параметрах системы в путях, например, windows\system32, соответственно убрав при вызове утилиты всё то же %MYFILES%\

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 11-05-2019 в 06:26.

Это сообщение посчитали полезным следующие участники:

Отправлено: 06:01, 11-05-2019 | #4


Старожил


Сообщения: 216
Благодарности: 15

Профиль | Отправить PM | Цитировать


Цитата:
а если попробовать вместо Cd после Chcp
Pushd "%MYFILES%\"
megaloman, спасибо. Попробовал и так, не срабатывает утилита nhrt.exe.
Цитата megaloman:
Кстати, а где находится утилита nhrt.exe? »
Она то вместе с другими нужными файлами распаковывается в папку %MYFILES%, (проверял, после запуска исполняемого файла, все нужные файлы там есть) на моём компе C:\Users\%UserName%\AppData\Local\. Пробовал и этот путь указывать вместо %MYFILES%, безрезультатно. Не хочет nhrt.exe работать и всё тут.


P.S. нужно наверное только прописывать путь для nhrt.exe в PATH. Но как это правильно прописать в моём bat файле ?

Последний раз редактировалось Uragan66, 11-05-2019 в 07:57.


Отправлено: 07:34, 11-05-2019 | #5


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Uragan66:
C:\Users\%UserName%\AppData\Local\. Пробовал и этот путь указывать вместо %MYFILES%, безрезультатно. »
Ну, а если таки выполнить всё по порядку, как это описано в документации?
Как минимум, для теста:
Код: Выделить весь код
@echo off
rem Непонятно зачем здесь это, поэтому пока сделаем так:
rem chcp 1251 >nul
set "MYFILES=C:\Users\%UserName%\AppData\Local\"
"%MYFILES%\url.vbs"
@echo move /Y J:\Download\Compressed\nhrt\plist_tv.m3u "%MYFILES%"

rem cd "%MYFILES%"
pushd "%MYFILES%"

start "" /D "%MYFILES%" /wait "nhrt.exe" "-list:delete_group.txt plist_tv.m3u"
start "" /D "%MYFILES%" /wait "nhrt.exe" "-list:replace_list.txt plist_tv.m3u"
TIMEOUT /T 5 /NOBREAK
popd

@echo move /Y "C:\Users\Uragan66\AppData\Local\plist_tv.m3u J:\Download\Compressed\nhrt"
pause&exit /b
и ещё требует уточнения:
где расположены:
Цитата:
replace_list.txt
delete_group.txt
plist_tv.m3u
?

-------
scio me nihil scire. Ѫ


Последний раз редактировалось YuS_2, 11-05-2019 в 08:45.

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:22, 11-05-2019 | #6


Старожил


Сообщения: 216
Благодарности: 15

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
а если таки выполнить всё по порядку »
Из ком.строки все команды по порядку выполняются без ошибок, но утилита nhrt.exe файл plist_tv.m3u не обрабатывает, на выходе он без изменений.
Цитата YuS_2:
где расположены:
Цитата:
replace_list.txt
delete_group.txt
plist_tv.m3u »
Файлы replace_list.txt и delete_group.txt компилируются в исполняемый файл, после его запуска распаковываются в %MYFILES%. plist_tv.m3u создаётся скриптом url.vbs в папке J:\Download\Compressed\nhrt\, потом перемещается тоже в %MYFILES%. Просто не хотел указывать в vbs эту злополучную папку %MYFILES%, все скрипты и программы почему-то видят её по-разному.

Отправлено: 09:19, 11-05-2019 | #7


Аватара для YuS_2

Crazy


Contributor


Сообщения: 1171
Благодарности: 487

Профиль | Отправить PM | Цитировать


Цитата Uragan66:
plist_tv.m3u создаётся скриптом url.vbs в папке J:\Download\Compressed\nhrt\, потом перемещается тоже в %MYFILES%. »
каким образом он перемещается?
так:
Цитата Uragan66:
@echo move /Y J:\Download\Compressed\nhrt\plist_tv.m3u "%MYFILES%" »
- он не переместится никогда...

-------
scio me nihil scire. Ѫ

Это сообщение посчитали полезным следующие участники:

Отправлено: 10:06, 11-05-2019 | #8


Старожил


Сообщения: 216
Благодарности: 15

Профиль | Отправить PM | Цитировать


Цитата YuS_2:
каким образом он перемещается?
так:
Цитата Uragan66:
@echo move /Y J:\Download\Compressed\nhrt\plist_tv.m3u "%MYFILES%" »
- он не переместится никогда... »
YuS_2, да, Вы правы. Просто планировалось вывод в лог, да так и забыл убрать @echo. Командой move /Y J:\Download\Compressed\nhrt\plist_tv.m3u "%MYFILES%" файл plist_tv.m3u перемещается, но проблемы это не решило. Утилита nhrt.exe упорно не хочет обрабатывать его.

Отправлено: 11:21, 11-05-2019 | #9


Старожил


Сообщения: 216
Благодарности: 15

Профиль | Отправить PM | Цитировать


Путём взаимоисключения пришел к такому коду:
Код: Выделить весь код
@echo off
set "MYFILES=C:\Users\%UserName%\AppData\Local\"
pushd "%MYFILES%"
url.vbs
move /Y J:\Download\Compressed\nhrt\plist_tv.m3u "%MYFILES%"
TIMEOUT /T 2 /NOBREAK
start nhrt.exe -list:delete_group.txt plist_tv.m3u
TIMEOUT /T 2 /NOBREAK
start nhrt.exe -list:replace_list.txt plist_tv.m3u
TIMEOUT /T 3 /NOBREAK
popd

move /Y "%MYFILES%\plist_tv.m3u" J:\Download\Compressed\nhrt
exit
Так программа nhrt.exe отрабатывает как положено. Но пришлось добавить временную задержку, со start /wait не хочет всёравно работать.
Спасибо всем за подсказки!

Отправлено: 11:54, 11-05-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Скомпилированный из "батника" exe работает только в папке с исходниками.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Не открываются "Скомпилированный HTML-файл справки" vovikrus Хочу все знать 5 14-07-2011 17:13
CMD/BAT - [решено] запуск *.exe с параметром "y" с помощью батника sharky lions Скриптовые языки администрирования Windows 22 18-04-2011 20:34
"2 Reboot (explorer.exe)" самодельная "прога" перезагружающая оболочку "explorer.exe" rizz Автоматическая установка приложений 14 30-11-2009 14:32
Разное - [решено] Вместо "Мой компьютер" или при двойном щелчке на папке открывается "Поиск" ZoolooS Microsoft Windows 2000/XP 4 18-06-2008 16:34
Запретить/удалить пункт "Programs" ("Программы") из меню кнопки "Start" ("Пуск") submaster Microsoft Windows NT/2000/2003 5 13-09-2006 12:29




 
Переход