CMD/BAT - [решено] Работа команды For

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

Re: CMD/BAT - [решено] Работа команды For

Сообщение gora »

Цитата Devils0411:



Не выводит на экран переменную. Скажите, где ошибка?
CMD/BAT - [решено] Работа команды For





Цитата Devils0411:





Код:

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

set tdir=%ini:~0,-1%

CMD/BAT - [решено] Работа команды For




Потому что не определена переменная ini.

PS

Переменная tdir определяется в цикле и, для ее вывода на экран в цикле, она должна быть не в знаках процента, а в знаках восклицания

Код:

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

Echo !tdir!

А в начале файла должна быть строка:

Код:

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

SetLocal enabledelayedexpansion
Аватара пользователя
gora

Re: CMD/BAT - [решено] Работа команды For

Сообщение gora »

gora, но ведь в переменную tdir записывается переменная ini с уменьшением на один символ с права.
Аватара пользователя
gora

Re: CMD/BAT - [решено] Работа команды For

Сообщение gora »

Цитата Devils0411:



но ведь в переменную tdir записывается переменная ini с уменьшением на один символ с права
CMD/BAT - [решено] Работа команды For




Еще раз повторю:
Цитата gora:



что не определена переменная ini.
CMD/BAT - [решено] Работа команды For




Если переменная в батнике не определена - значит она "пустая" (нет ее). Сколько от нее не отрезай все равно в tdir ни чего не будет добавлено и она тоже будет "пустая" и вывести ее на экран консоли не удастся!
Аватара пользователя
gora

Re: CMD/BAT - [решено] Работа команды For

Сообщение gora »

ее нужно определить до цикла или внутри?
Аватара пользователя
gora

Re: CMD/BAT - [решено] Работа команды For

Сообщение gora »

Можно до цикла, тогда можно использовать %ini%, а если в цикле, то нужно будет использовать !ini! и строку SetLocal enabledelayedexpansion в начале файла (писал уже выше).
Аватара пользователя
Devils0411

Re: CMD/BAT - [решено] Работа команды For

Сообщение Devils0411 »

Спасибо за помощь. Решил все-таки в цикле использовать.
Аватара пользователя
gora

Re: CMD/BAT - [решено] Работа команды For

Сообщение gora »

Все же проблема осталась...



Код:

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

@Echo off 
SetLocal enabledelayedexpansion
For %%a in ( "%ProgramFiles(x86)%\test4U\run.exe" "%ProgramFiles%\test4U\run.exe" ) Do (
if exist %%a ( 
set ini=%%~dpa 
set tdir=!ini:~0,-1!
 Echo !tdir! 
pause 
) Else ( 
goto end) 
)
:end 
Echo ничего нет 
pause

Почему то в расчет берется первое множество. Т.е. если в первом множестве не был найден файл, то просто переходит в метке :end, и не проверяет второе множество.
Аватара пользователя
gora

Re: CMD/BAT - [решено] Работа команды For

Сообщение gora »

Попробуйте так:

Код:

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

@Echo off 
SetLocal enabledelayedexpansion
For %%a in ("%ProgramFiles(x86)%\test4U\run.exe" "%ProgramFiles%\test4U\run.exe") Do (
	if exist %%a ( 
		set ini=%%~dpa 
		set tdir=!ini:~0,-1!
		Echo !tdir! 
	)
)
If Not Defined tdir Echo ничего нет
pause
Ответить

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