因爲批量並沒有真正的整數,所以我必須用set/a來解決它。在這裏,我有一個計算數字表達式,並將其設置成一個字符串代碼段(從批):帶有set/a的批量打印
@echo off
set test=|set /a 12-10
pause
我的問題是,這實際上打印「測試」字符串。這很不方便,因爲我可能需要稍後更改字符串。有沒有什麼辦法可以解決這個問題(除了一大堆CLS之外)?
因爲批量並沒有真正的整數,所以我必須用set/a來解決它。在這裏,我有一個計算數字表達式,並將其設置成一個字符串代碼段(從批):帶有set/a的批量打印
@echo off
set test=|set /a 12-10
pause
我的問題是,這實際上打印「測試」字符串。這很不方便,因爲我可能需要稍後更改字符串。有沒有什麼辦法可以解決這個問題(除了一大堆CLS之外)?
我相信
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
這會給你一些想法:
@echo off
set test=|set /a 16-10
ECHO.
SET /A y=12 - 10
ECHO.y = '%y%'
pause>nul
這不是問題所在。注意你的版本在開始時會如何打印6。我試圖讓它不打印結果集。 – LastStar007 2012-03-25 21:24:54
好吧,從我的示例代碼中可以看出,如果有部分內容不需要打印,那麼您可以更改代碼,使其不打印。我展示了一個使用nul的例子,以及使用ECHO的例子。你還需要什麼? – djangofan 2012-03-26 16:09:40
設置的行仍然打印。另一個Overflow指出,這是因爲'set/a'的值沒有被設置爲任何值,它會打印到命令行。 – LastStar007 2012-03-27 19:48:39
我想我忽略了我的目標。我試圖執行一個算術運算並將該值設置爲一個字符串。有小費嗎? – LastStar007 2012-03-25 21:34:32
請更好地解釋,這是沒有意義的。正如你所說,批處理文件中沒有整數,所以在我寫的代碼片段之後,'test'包含字符串'2'。 「將該值設置爲一個字符串」並不意味着什麼。 – Mat 2012-03-25 21:37:51
您的代碼的問題是它仍然打印2.我試圖執行一個算術運算(12-10),然後將結果保存到一個字符串中,以便稍後在批處理文件中使用該字符串。 – LastStar007 2012-03-25 21:41:26