giacxyz
26-10-2017, 18:51
Buongiorno,
sono nuovo del forum e spero di avere inserito il problema nel forum corretto.
Sto lavorando ad un batch con sistema win xp pro sp3.
Ho provato a cercare in rete per il mio problema ma le risposte non sono soddisfacenti.
In molti forum si dice che per effettuare una delete di una variabile esistente e già valorizzata sia sufficiente scrivere set /a var=
Il problema sorge quando, vedi il codice più sotto, provo a testare l'annullamento della variabile, la risposta del sistema è che la variabile è ancora valorizzata e questo:
(a) sia quando effettuo il test con un echo
(b) sia quando provo a reindirizzare il comando set su un file
(1) Da <echo [01]> mi aspetterei un <null> oppure <undefine> o q.sa di simile.
(2) Da <set z > C:\WINDOWS\system32\zCONTAINER_0*.txt> mi aspetterei un file vuoto
Idem se eseguo il codice con setlocal enabledelayedexpansion ... endlocal,
unica differenza, chiaramente, è che essendo la variabile locale il comando set da console risponde con: Variabile di ambiente z non definita, ma i due file creati dalla redirezione sono entrambi valorizzati.
La cosa strana è che, con lo stesso codice, ma dichiarando una variabile letterale <set zVarNum=aaa> anzichè una numerica, tutto è corretto.
Grazie anticipatamente.
:--------------------------------------------------------con variabile numerica
@echo off
set /a zVarNum=1
echo [00]: %zVarNum%
set z > C:\WINDOWS\system32\zCONTAINER_00.txt
set /a zVarNum=
echo [01]: %zVarNum%
set z > C:\WINDOWS\system32\zCONTAINER_01.txt
@echo on
OUTPUT CONSOLE:
C:\WINDOWS\system32>ztest00.bat
[00]: 1
Operando mancante.
[01]: 1
C:\WINDOWS\system32>
OUTPUT COMANDO SET SU CONSOLE (post esecuzione):
C:\WINDOWS\system32>set z
zVarNum=1
C:\WINDOWS\system32>
OUTPUT DI: set z > C:\WINDOWS\system32\zCONTAINER_00.txt |---|> File creato e valorizzato con: zVarNum=1
OUTPUT DI: set z > C:\WINDOWS\system32\zCONTAINER_01.txt |---|> File creato e valorizzato con: zVarNum=1
:--------------------------------------------------------con variabile letterale
@echo off
set zVarNum=aaa
echo [00]: %zVarNum%
set z > C:\WINDOWS\system32\zCONTAINER_00.txt
set zVarNum=
echo [01]: %zVarNum%
set z > C:\WINDOWS\system32\zCONTAINER_01.txt
@echo on
OUTPUT CONSOLE:
C:\WINDOWS\system32>ztest00.bat
[00]: aaa
[01]:
Variabile di ambiente z non definita
C:\WINDOWS\system32>
OUTPUT COMANDO SET SU CONSOLE:
C:\WINDOWS\system32>set z
Variabile di ambiente z non definita
C:\WINDOWS\system32>
OUTPUT DI: set z > C:\WINDOWS\system32\zCONTAINER_00.txt |---|> File creato e valorizzato con: zVarNum=aaa
OUTPUT DI: set z > C:\WINDOWS\system32\zCONTAINER_01.txt |---|> File creato e non valorizzato
sono nuovo del forum e spero di avere inserito il problema nel forum corretto.
Sto lavorando ad un batch con sistema win xp pro sp3.
Ho provato a cercare in rete per il mio problema ma le risposte non sono soddisfacenti.
In molti forum si dice che per effettuare una delete di una variabile esistente e già valorizzata sia sufficiente scrivere set /a var=
Il problema sorge quando, vedi il codice più sotto, provo a testare l'annullamento della variabile, la risposta del sistema è che la variabile è ancora valorizzata e questo:
(a) sia quando effettuo il test con un echo
(b) sia quando provo a reindirizzare il comando set su un file
(1) Da <echo [01]> mi aspetterei un <null> oppure <undefine> o q.sa di simile.
(2) Da <set z > C:\WINDOWS\system32\zCONTAINER_0*.txt> mi aspetterei un file vuoto
Idem se eseguo il codice con setlocal enabledelayedexpansion ... endlocal,
unica differenza, chiaramente, è che essendo la variabile locale il comando set da console risponde con: Variabile di ambiente z non definita, ma i due file creati dalla redirezione sono entrambi valorizzati.
La cosa strana è che, con lo stesso codice, ma dichiarando una variabile letterale <set zVarNum=aaa> anzichè una numerica, tutto è corretto.
Grazie anticipatamente.
:--------------------------------------------------------con variabile numerica
@echo off
set /a zVarNum=1
echo [00]: %zVarNum%
set z > C:\WINDOWS\system32\zCONTAINER_00.txt
set /a zVarNum=
echo [01]: %zVarNum%
set z > C:\WINDOWS\system32\zCONTAINER_01.txt
@echo on
OUTPUT CONSOLE:
C:\WINDOWS\system32>ztest00.bat
[00]: 1
Operando mancante.
[01]: 1
C:\WINDOWS\system32>
OUTPUT COMANDO SET SU CONSOLE (post esecuzione):
C:\WINDOWS\system32>set z
zVarNum=1
C:\WINDOWS\system32>
OUTPUT DI: set z > C:\WINDOWS\system32\zCONTAINER_00.txt |---|> File creato e valorizzato con: zVarNum=1
OUTPUT DI: set z > C:\WINDOWS\system32\zCONTAINER_01.txt |---|> File creato e valorizzato con: zVarNum=1
:--------------------------------------------------------con variabile letterale
@echo off
set zVarNum=aaa
echo [00]: %zVarNum%
set z > C:\WINDOWS\system32\zCONTAINER_00.txt
set zVarNum=
echo [01]: %zVarNum%
set z > C:\WINDOWS\system32\zCONTAINER_01.txt
@echo on
OUTPUT CONSOLE:
C:\WINDOWS\system32>ztest00.bat
[00]: aaa
[01]:
Variabile di ambiente z non definita
C:\WINDOWS\system32>
OUTPUT COMANDO SET SU CONSOLE:
C:\WINDOWS\system32>set z
Variabile di ambiente z non definita
C:\WINDOWS\system32>
OUTPUT DI: set z > C:\WINDOWS\system32\zCONTAINER_00.txt |---|> File creato e valorizzato con: zVarNum=aaa
OUTPUT DI: set z > C:\WINDOWS\system32\zCONTAINER_01.txt |---|> File creato e non valorizzato