2012-03-25 3 views
0

Da Batch nicht wirklich ints hat, muss ich umgehen mit set/a. Hier habe ich ein Code-Segment (aus einer Charge), die einen numerischen Ausdruck auswertet und setzt sie in einen String:Batch druckt mit set/a

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

Mein Problem ist, dass dies tatsächlich druckt den „Test“ String. Das ist ziemlich umständlich, da ich die Saite später vielleicht ändern muss. Gibt es einen Weg (neben einer ganzen Reihe von Cls)?

Antwort

1

Ich glaube

set /a test=12-10 > NUL 

ist, was Sie nach - Ihre Version nicht test überhaupt nicht festgelegt.

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 

Sie können auch indirekte Zuweisungen wie das tun:

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

Ich denke, ich aus den Augen mein Ziel verloren. Ich versuche eine arithmetische Operation auszuführen und den Wert auf eine Zeichenfolge festzulegen. Irgendwelche Tipps? – LastStar007

+0

Bitte erklären Sie das besser, es macht keinen Sinn. Wie Sie gesagt haben, gibt es keine Ints in Batch-Dateien. Nach dem Snippet, das ich geschrieben habe, enthält "test" die Zeichenfolge "2". "Setze den Wert auf eine Zeichenkette" bedeutet nichts. – Mat

+0

Das Problem mit Ihrem Code ist, dass es noch druckt 2. Ich versuche, eine arithmetische Operation (12-10) durchzuführen, und speichern Sie das Ergebnis in eine Zeichenfolge, so dass ich die Zeichenfolge später in der Batchdatei verwenden kann. – LastStar007

1

Dies gibt Ihnen einige Ideen:

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

Das ist nicht das Problem. Beachten Sie, wie Ihre Version 6 am Anfang drucken wird. Ich versuche, das Ergebnis der Sets nicht zu drucken. – LastStar007

+0

Nun, es ist ziemlich offensichtlich von meinem Beispiel-Code, dass, wenn es einen Teil davon gibt, Sie nicht drucken möchten, dann können Sie den Code ändern, so dass es nicht gedruckt wird. Ich zeige ein Beispiel für die Verwendung von Nul und auch ein Beispiel für die Verwendung von ECHO. Was brauchst du noch? – djangofan

+0

Die eingestellte Zeile wird weiterhin gedruckt. Ein weiterer Overflower wies darauf hin, dass der Wert von 'set/a' auf nichts gesetzt ist, da er auf die Befehlszeile ausgegeben wird. – LastStar007