2012-03-25 2 views
0

배치에는 실제로 int가 없기 때문에 set/a를 사용하여 해결해야합니다.세트/a로 배치 인쇄

@echo off 
set test=|set /a 12-10 
pause 

내 문제는 이것이 실제로 "테스트"문자열을 출력한다는 것입니다 : 여기가 숫자 식을 평가하고 문자열로 설정합니다 (일괄)에서 코드 세그먼트가 있습니다. 나중에 문자열을 변경해야 할 수도 있기 때문에 이것은 매우 불편합니다. 이 문제를 해결할 방법이 있습니까? 버전이 모두 test를 설정하지 않습니다 -

답변

1

나는

set /a test=12-10 > NUL 

이 후이있어 무엇을 생각합니다.

C:\temp>type t.cmd 
@echo off 
set /a test=1+5-21 > NUL 
echo Test is: %test% 

C:\temp>t.cmd 
Test is: -15 

당신은 그런 식으로 간접 과제를 수행 할 수 이것은 당신에게 몇 가지 아이디어를 줄 것이다

C:\temp>type t.cmd 
@echo off 
setlocal 
echo before: %mything% 
set var=mything 
set /a %var%=4+3 
echo after: %mything% 


C:\temp>t.cmd 
before: 
after: 7 
+0

나는 내 목표의 시력을 잃은 것 같아요. 산술 연산을 수행하고 값을 문자열로 설정하려고합니다. 어떤 팁? – LastStar007

+0

더 잘 설명해주십시오. 이해가되지 않습니다. 앞에서 말했듯이 배치 파일에는 int가 없기 때문에 내가 작성한 스 니펫 다음에 'test'에는 문자열 '2'가 들어 있습니다. "값을 문자열로 설정"은 아무 의미도 없습니다. – Mat

+0

코드의 문제는 여전히 2를 인쇄한다는 것입니다. 산술 연산 (12-10)을 수행하고 결과를 문자열에 저장하려고 시도하고 있으므로 나중에 배치 파일에서 문자열을 사용할 수 있습니다. – LastStar007

1

:

@echo off 
set test=|set /a 16-10 
ECHO. 
SET /A y=12 - 10 
ECHO.y = '%y%' 
pause>nul 
+0

그건 문제가되지 않습니다. 처음에 버전이 어떻게 인쇄되는지 확인하십시오. 세트의 결과를 인쇄하지 않도록하려고합니다. – LastStar007

+0

글쎄, 내 예제 코드에서 분명히 드러난다.이 부분에 인쇄하고 싶지 않다면, 코드를 변경하여 인쇄하지 않도록 할 수있다. nul을 사용하는 예와 ECHO를 사용하는 예를 보여줍니다. 그 밖에 무엇이 필요하겠습니까? – djangofan

+0

설정 줄이 계속 인쇄됩니다. 또 다른 Overflower는 'set/a'의 값이 아무것도 설정되지 않았기 때문에 명령 행에 출력한다는 점을 지적했습니다. – LastStar007