Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.96/24: Рейтинг темы: голосов - 24, средняя оценка - 4.96
VadimAndronov
24 / 24 / 11
Регистрация: 15.06.2012
Сообщений: 138
1

Пробелы в значении переменной

17.07.2012, 17:32. Просмотров 4927. Ответов 8
Метки нет (Все метки)

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@echo off
if %1 == KhZ910U9 (
goto m1
) else (
goto m2
)
 
:m1
set cor1=\install path
echo %cor1% == %2
set qw=%2
set path=%qw:~1%
if %path% == %cor1% (
echo correct
pause
) else (
echo incorrect
pause
)
 
:m2
при запуске скрипта с параметрами KhZ910U9 Hdfj
получаю
\install path == Hdfj
correct
Для продолжения нажмите любую клавишу . . .
incorrect
Для продолжения нажмите любую клавишу . . .

А нужно
incorrect
Для продолжения нажмите любую клавишу . . .

Думаю проблема в пробелах значения переменной %path% как решить проблему?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2012, 17:32
Ответы с готовыми решениями:

Замена символов в значении переменной
Есть код который работал без помех (даты изымаемые из имени файла я в примере опустил). @Echo...

Замена символов в значении переменной
Доброго времени суток! Есть два файла: 1. config.ini: 2. backup.bat:

Как проверить наличие спецсимволов в значении переменной?
Как проверить наличие спецсимволов в переменной, которая будет использоваться для имени файла и...

Замена определённого символа в значении переменной другим
Здравствуйте, можно ли считать фразу из txt файла в переменную и в переменной в этой фразе заменить...

Замена в значении переменной определённого символа символом процента
Есть выражение типа: set x=23/3 rem хочу заменить знак деления set y=%x:/=%% echo %y% В...

8
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
17.07.2012, 19:03 2
VadimAndronov, постарайтесь в скриптах избегать лишних пробелов. Если Вы сравниваете два текстовых значения, возьмите их в кавычки.
Bash
1
if "%path%"=="%cor1%" (
Кроме того, после выполнения условий второй строки, скрипт возвращается на седьмую строку. желательно там поставить функцию завершения скрипта GoTo :EOF
1
VadimAndronov
24 / 24 / 11
Регистрация: 15.06.2012
Сообщений: 138
17.07.2012, 20:08  [ТС] 3
Цитата Сообщение от sov44 Посмотреть сообщение
VadimAndronov, постарайтесь в скриптах избегать лишних пробелов. Если Вы сравниваете два текстовых значения, возьмите их в кавычки.
Bash
1
if "%path%"=="%cor1%" (
Кроме того, после выполнения условий второй строки, скрипт возвращается на седьмую строку. желательно там поставить функцию завершения скрипта GoTo :EOF
Microsoft Windows [Version 6.1.7600]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

d:\>cd /d d:/makeinstall

d:\MAKEINSTALL>hellowrld.bat KhZ910U9 "\install path"

d:\MAKEINSTALL>if KhZ910U9 == KhZ910U9 (goto m1 ) else (goto m2 )

d:\MAKEINSTALL>set cor1=\install path

d:\MAKEINSTALL>echo \install path == "\install path"
\install path == "\install path"

d:\MAKEINSTALL>set qw="\install path"

d:\MAKEINSTALL>set path=\install path"
Непредвиденное появление: path" (.

d:\MAKEINSTALL>if "\install path"" == "\install path" (

d:\MAKEINSTALL>

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if %1 == KhZ910U9 (
goto m1
) else (
goto m2
)
 
:m1
set cor1=\install path
echo %cor1% == %2
set qw=%2
set path=%qw:~1%
if "%path%" == "%cor1%" (
correct.vbs
Goto end
) else (
incorrect.vbs
goto end
)
 
:m2
goto end
 
:end
pause
0
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
17.07.2012, 20:32 4
Цитата Сообщение от VadimAndronov Посмотреть сообщение
при запуске скрипта с параметрами KhZ910U9 Hdfj
Цитата Сообщение от VadimAndronov Посмотреть сообщение
d:\MAKEINSTALL>hellowrld.bat KhZ910U9 "\install path"
VadimAndronov, согласно Вашему условию, второй аргумент должен быть Hdfj а не \install path
1
VadimAndronov
24 / 24 / 11
Регистрация: 15.06.2012
Сообщений: 138
17.07.2012, 20:43  [ТС] 5
Цитата Сообщение от sov44 Посмотреть сообщение
VadimAndronov, согласно Вашему условию, второй аргумент должен быть Hdfj а не \install path
Просто скажите, что у меня не так. С incorrect работает отлично, но с Correct описал картину выше
0
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
17.07.2012, 20:55 6
Цитата Сообщение от VadimAndronov Посмотреть сообщение
d:\MAKEINSTALL>if "\install path"" == "\install path" (
в аргументе слева лишняя кавычка.
Цитата Сообщение от VadimAndronov Посмотреть сообщение
d:\MAKEINSTALL>set path=\install path"
1
VadimAndronov
24 / 24 / 11
Регистрация: 15.06.2012
Сообщений: 138
17.07.2012, 21:30  [ТС] 7
Цитата Сообщение от sov44 Посмотреть сообщение
в аргументе слева лишняя кавычка.
Откуда оно там берется?

Добавлено через 3 минуты
11ая строка... На входе скрипту, вторым аргументом подается строка типа X:/Directory/directory/, изменяться может только X, поэтому я решил обрезать его с помощью set. Как мне быть?

Добавлено через 4 минуты
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if %1 == KhZ910U9 (
goto m1
) else (
goto m2
)
 
:m1
set cor1=\install path
echo %cor1% == %2
set qw=%2
set path=%qw:~2,-1%
if "%path%" == "%cor1%" (
correct.vbs
Goto end
) else (
incorrect.vbs
goto end
)
 
:m2
goto end
 
:end
pause
Вот так вроде работает, спасибо.

Добавлено через 17 минут
Damn it! не работает

Добавлено через 3 минуты
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
if %1 == KhZ910U9 (
goto m1
) else (
goto m2
)
 
:m1
set cor1=:\folder\ fo lder\
echo %cor1% == %2
set qw=%2
set path=%qw:~2,-1%
if "%path%" == "%cor1%" (
correct.vbs
Goto end
) else (
incorrect.vbs
goto end
)
 
:m2
goto end
 
:end
pause
Microsoft Windows [Version 6.1.7600]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\Users\Вадим>Cd /d D:/makeinstall

D:\MAKEINSTALL>hellowrld.bat KhZ910U9 D:\folder\ fo lder\

D:\MAKEINSTALL>if KhZ910U9 == KhZ910U9 (goto m1 ) else (goto m2 )

D:\MAKEINSTALL>set cor1=:\folder\ fo lder\

D:\MAKEINSTALL>echo :\folder\ fo lder\ == D:\folder\
:\folder\ fo lder\ == D:\folder\

D:\MAKEINSTALL>set qw=D:\folder\

D:\MAKEINSTALL>set path=\folder

D:\MAKEINSTALL>if "\folder" == ":\folder\ fo lder\" (
correct.vbs
Goto end
) else (
incorrect.vbs
goto end
)

D:\MAKEINSTALL>pause
Для продолжения нажмите любую клавишу . . .
Срабатывает incorrect.vbs

Добавлено через 1 минуту
ах, все, ковычки в 8 строке поставил. Решено
0
sov44
1760 / 744 / 128
Регистрация: 09.04.2011
Сообщений: 1,314
17.07.2012, 21:36 8
VadimAndronov, если возможно изменение буквы логического диска, не вижу смысла вводить его вторым аргументом. Проще сделать поиск нужного раздела по нужной директории.
Код
for %%d in (Z Y X W U V T S R Q P O N M L K J I H G F E D C) do if exist %%d:\Directory\directory set gm=%%d:\Directory\directory
1
VadimAndronov
24 / 24 / 11
Регистрация: 15.06.2012
Сообщений: 138
17.07.2012, 22:05  [ТС] 9
Цитата Сообщение от sov44 Посмотреть сообщение
VadimAndronov, если возможно изменение буквы логического диска, не вижу смысла вводить его вторым аргументом. Проще сделать поиск нужного раздела по нужной директории.
Код
for %%d in (Z Y X W U V T S R Q P O N M L K J I H G F E D C) do if exist %%d:\Directory\directory set gm=%%d:\Directory\directory
вы меня не поняли В любом случае, теперь все работает
0
17.07.2012, 22:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2012, 22:05

Замена в значении переменной строки, содержащей знак равенства
Надо, например, заменить "a=b" на "с". Если делать так: @echo off set "x=<a=bx><a=by>" ...

В значении переменной TIME заменить все двоеточия и запятую на точки
Всем привет. Задача - в переменной %time% все двоеточия и запятые поменять на точки. как это...

Как по FTP передать файл с именем, основанном на значении переменной DATE?
Всем привет. Необходимо содержимое папки запаковать в архив, далее залить его на фтп. @Echo Off...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru