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

Аватара пользователя
Uragan66

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

Сообщение Uragan66 »

Доброго времени суток всем!

Может у кого была подобная проблема, что посоветуете.

Написал батник для замены нужного текста в различных текстовых файлах. В основе консольная утилита 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 работают только в папке с исходниками.

Подскажите, пожалуйста, что в нём не так ?
Аватара пользователя
alpap

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

Сообщение alpap »

если код выше полный, то где назначение переменной %MYFILES% ?

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

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

Сообщение YuS_2 »

Цитата:



где назначение переменной %MYFILES% ?



alpap, переменную %MYFILES% использует только компилятор Quick Batch File Compiler, так для него именуется папка C:\Users\User\AppData\Local, в неё временно помещаются файлы упакованные в исполняемый exe.

cd /d "Диск:\Папка" пробовал - безрезультатно. Вернее из ком. строки работает, если использовать путь C:\Users\User\AppData\Local, из скомпилированного exe не хочет.
Аватара пользователя
Uragan66

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

Сообщение Uragan66 »

Цитата:



где назначение переменной %MYFILES% ?



alpap, переменную %MYFILES% использует только компилятор Quick Batch File Compiler, так для него именуется папка C:\Users\User\AppData\Local, в неё временно помещаются файлы упакованные в исполняемый exe.

cd /d "Диск:\Папка" пробовал - безрезультатно. Вернее из ком. строки работает, если использовать путь C:\Users\User\AppData\Local, из скомпилированного exe не хочет.
Аватара пользователя
megaloman

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

Сообщение megaloman »

Цитата:



а если попробовать вместо Cd после Chcp

Pushd "%MYFILES%\"



megaloman, спасибо. Попробовал и так, не срабатывает утилита nhrt.exe.


Цитата megaloman:



Кстати, а где находится утилита nhrt.exe?
CMD/BAT - [решено] Скомпилированный из "батника" exe работает только в папке с исходниками.




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





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

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

Сообщение Uragan66 »

Цитата Uragan66:



C:\Users\%UserName%\AppData\Local\. Пробовал и этот путь указывать вместо %MYFILES%, безрезультатно.
CMD/BAT - [решено] Скомпилированный из "батника" exe работает только в папке с исходниками.




Ну, а если таки выполнить всё по порядку, как это описано в документации?

Как минимум, для теста:



Код:

Код: Выделить всё

@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



?
Аватара пользователя
YuS_2

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

Сообщение YuS_2 »

Цитата YuS_2:



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




Из ком.строки все команды по порядку выполняются без ошибок, но утилита nhrt.exe файл plist_tv.m3u не обрабатывает, на выходе он без изменений.


Цитата YuS_2:



где расположены:

Цитата:

replace_list.txt

delete_group.txt

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




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

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

Сообщение Uragan66 »

Цитата Uragan66:



plist_tv.m3u создаётся скриптом url.vbs в папке J:\Download\Compressed\nhrt\, потом перемещается тоже в %MYFILES%.
CMD/BAT - [решено] Скомпилированный из "батника" exe работает только в папке с исходниками.




каким образом он перемещается?

так:


Цитата Uragan66:



@echo move /Y J:\Download\Compressed\nhrt\plist_tv.m3u "%MYFILES%"
CMD/BAT - [решено] Скомпилированный из "батника" exe работает только в папке с исходниками.




- он не переместится никогда...
Аватара пользователя
YuS_2

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

Сообщение YuS_2 »

Цитата YuS_2:



каким образом он перемещается?

так:

Цитата Uragan66:

@echo move /Y J:\Download\Compressed\nhrt\plist_tv.m3u "%MYFILES%" »

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




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

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

Сообщение Uragan66 »

Путём взаимоисключения пришел к такому коду:



Код:

Код: Выделить всё

@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 не хочет всёравно работать.

Спасибо всем за подсказки!
Ответить

Вернуться в «Скриптовые языки администрирования Windows»