2012-03-25 47 views
0

因爲批量並沒有真正的整數,所以我必須用set/a來解決它。在這裏,我有一個計算數字表達式,並將其設置成一個字符串代碼段(從批):帶有set/a的批量打印

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

我的問題是,這實際上打印「測試」字符串。這很不方便,因爲我可能需要稍後更改字符串。有沒有什麼辦法可以解決這個問題(除了一大堆CLS之外)?

回答

1

我相信

set /a test=12-10 > NUL 

是你追求的 - 你的版本沒有設置test可言。

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 2012-03-25 21:34:32

+0

請更好地解釋,這是沒有意義的。正如你所說,批處理文件中沒有整數,所以在我寫的代碼片段之後,'test'包含字符串'2'。 「將該值設置爲一個字符串」並不意味着什麼。 – Mat 2012-03-25 21:37:51

+0

您的代碼的問題是它仍然打印2.我試圖執行一個算術運算(12-10),然後將結果保存到一個字符串中,以便稍後在批處理文件中使用該字符串。 – LastStar007 2012-03-25 21:41:26

1

這會給你一些想法:

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

這不是問題所在。注意你的版本在開始時會如何打印6。我試圖讓它不打印結果集。 – LastStar007 2012-03-25 21:24:54

+0

好吧,從我的示例代碼中可以看出,如果有部分內容不需要打印,那麼您可以更改代碼,使其不打印。我展示了一個使用nul的例子,以及使用ECHO的例子。你還需要什麼? – djangofan 2012-03-26 16:09:40

+0

設置的行仍然打印。另一個Overflow指出,這是因爲'set/a'的值沒有被設置爲任何值,它會打印到命令行。 – LastStar007 2012-03-27 19:48:39