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

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

x0r 21-09-2016 18:20 2670907

Скрипт не понимает переменные. Подскажите.
 
Сделал скриптег для запуска программ. Чтоб не всякие там сложности с реестром, а все в одном месте было. Скрипт берет список нужных прог из файла... и тут янипанимаю: нельзя использовать переменные типа %PROGRAMFILES% или %COMMANDER_PATH% в путях. А хотелось бы.
Подскажите что не так.
Скрипт проверяет есть ли такой процесс и если нет, то запускает.

Код:

@echo off
title Autorun Programs v1.1
chcp 866>nul
cd /d %~dp0
rem if not exist progs.lst goto HELP
:MAIN
rem echo ^    ----------------------------------------------------
rem echo ^    ^|                                                  ^|
rem echo ^    ^|  ¤¤¤ Запустить программы Автозагрузки ? ¤¤¤      ^|
rem echo ^    ^|                                                  ^|
rem echo ^    ----------------------------------------------------
rem set /p S=[ "Y" -  Запустить  / "N" - нет Выход ] _
rem if /i %S% neq y exit
for /f "delims=; tokens=1,2* eol=#" %%a in (progs.lst) do (
        @tasklist|find /i "%%b" 1>nul
if errorlevel 1 (echo ^              ^-----------^> Запускаю %%b
        start "" "%%a\%%b" %%~c & ping 127.0.0.1 -n 5 >nul
        )
)



Пример файла со списком программ

Код:

#----------------------------------------------------------------------
# не использовать переменные. %PROGRAMFILES% и др.
#----------------------------------------------------------------------
d:\MyPROGs\FM\TC;TOTALCMD.EXE
C:\Program Files\Privacyware\Privatefirewall 7.0;PFGUI.exe
d:\MyPROGs\FM\TC\SOFT\UsefullUtilits\ActiveKeyboard;HotFiles.exe
d:\MyPROGs\FM\TC\SOFT\Process_and_Servicess\ProcessHacker2\x86;ProcessHacker.exe
d:\MyPROGs\FM\TC\SOFT\Process_and_Servicess\ProcessKiller;processkiller.exe
#c:\0l0\MyPROG\FM\TC\SOFT\FileViewers\Everything;Everything.exe;-startup
#c:\0l0\MyPROG\FM\TC\SOFT\UsefullUtilits\Clipdiary37;clipdiary-portable.exe
d:\MyPROGs\FM\TC\SOFT\UsefullUtilits\Clipdiary;clipdiary.exe
d:\MyPROGs\FM\TC\SOFT\UsefullUtilits\FlyingWindows;flyingwindows.exe


alpap 23-09-2016 03:08 2671291

Цитата:

Цитата x0r
нельзя использовать переменные типа %PROGRAMFILES% »

Почему.
Содержимое "file.txt":
Код:

%Programfiles%
Теперь запустите код:
Код:

@echo off
<"file.txt">"list.txt" (for /f "delims=" %%a in ('more') do @cmd/v/c dir /b "%%a")
exit

.

x0r 24-09-2016 07:14 2671611

Это не то. У мя в скрипте в цикле идет запуск, разбирается строка с путем из файла(# - это комментарий, пропускается, а разделитель между путем и *.exe-файлом - ; )
Код:

for /f "delims=; tokens=1,2* eol=#" %%a in (progs.lst)
потом идет проверка на существование такого процесса
Код:

@tasklist|find /i "%%b" 1>nul
и если его нету, то тогда запускается нужная программа
Код:

start "" "%%a\%%b" %%~c & ping 127.0.0.1 -n 5 >nul
Берутся строки через переменные много раз и видать я чего-то не знаю, почему так нельзя. Или может нада по другому построить цикл?
Попробуй чеерез мой скрипт запустить файлег стаким содержанием:
Код:

%SYSTEMROOT%;notepad.exe
%SYSTEMROOT%\System32;calc.exe

... будет ошибка.

Iska 25-09-2016 05:13 2671934

x0r, добавьте в:
Код:

start "" "%%a\%%b" %%~c
вызов call для раскрытия переменных окружения:
Код:

call start "" "%%a\%%b" %%~c
Разумеется, %COMMANDER_PATH% и иже с ними будут доступны токмо из-под Total Commander'а.

x0r 08-10-2016 23:33 2676229

Теперь всё как надо.
За переменные вкурсе, скрипт живет внутри ТС и запускается из него. А так же, наверно, можно вначале скрипта прописать эту переменную и должно быть тоже, гут.
Благодарю!


Время: 22:24.

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