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

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

Ответить
Настройки темы
CMD/BAT - [решено] Скрипт не понимает переменные. Подскажите.
x0r x0r вне форума

Забанен


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

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


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

Отправлено: 18:20, 21-09-2016

 

Ветеран


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

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


Цитата 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
.

Отправлено: 03:08, 23-09-2016 | #2



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

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

x0r x0r вне форума Автор темы

Забанен


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

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


Это не то. У мя в скрипте в цикле идет запуск, разбирается строка с путем из файла(# - это комментарий, пропускается, а разделитель между путем и *.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
... будет ошибка.

Последний раз редактировалось x0r, 24-09-2016 в 07:16. Причина: ашипки.


Отправлено: 07:14, 24-09-2016 | #3


Ветеран


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

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


x0r, добавьте в:
Код: Выделить весь код
start "" "%%a\%%b" %%~c
вызов call для раскрытия переменных окружения:
Код: Выделить весь код
call start "" "%%a\%%b" %%~c
Разумеется, %COMMANDER_PATH% и иже с ними будут доступны токмо из-под Total Commander'а.
Это сообщение посчитали полезным следующие участники:

Отправлено: 05:13, 25-09-2016 | #4

x0r x0r вне форума Автор темы

Забанен


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

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


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

Отправлено: 23:33, 08-10-2016 | #5



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - [решено] Компилятор не понимает кириллицу в принципе VokaMut Программирование и базы данных 4 31-10-2011 19:32
7 / 2008 R2 - [решено] CMD не понимает слово Администраторы ruslanhamidov80 Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 3 12-10-2011 18:28
Проблема с PHP(не передаются переменные из формы в PHP- скрипт) Kirander Вебмастеру 21 03-08-2009 01:11
exchange не понимает формат rtf raxsys Microsoft Exchange Server 1 24-09-2008 09:01
MS Sans Serif - не понимает кириллцу ASE DAG Microsoft Windows 95/98/Me (архив) 1 31-10-2005 00:11




 
Переход