Sto cercando di chiamare un'altra istanza CMD e passarci i dati dall'istanza padre.
Sono consapevole del percorso generale di utilizzo delle variabili, ma in questo caso non sarebbe possibile in quanto l'endlocal e il bridging rappresenterebbero un inconveniente eccessivo (dovrebbero trasmettere decine di variabili). So anche che potrei usare file temporanei per trasferire facilmente tutti i dati che voglio, ma questo lascerebbe impronte indesiderate. EDIT: setx può anche essere usato con successo.
Sto cercando specificamente qualcosa sulla falsariga dell'uso comune di argomenti, come:
test.bat -setvar"variable"="value" -setvar...
In precedenza ho trovato un modo con i suoi limiti
Ho scoperto su un altro thread che posso aggiungere un comando alla fine di inizio cmd
start cmd /c call "test.bat" ^& PAUSE
Naturalmente possiamo invertire questo
start cmd /c call PAUSE ^& TIMEOUT 5 ^& PAUSE ^& test.bat
I comandi non possono avere "" e, sospetto, caratteri speciali. ciò presenta un problema quando si tenta di trasferire variabili complesse.
A proposito di personaggi speciali:
start cmd /c call (PAUSE) ^& (TIMEOUT 5) ^& (REM !"#¤%&/=?`´^*"-.,_:;\*~¨) ^& test.bat
Questo non funzionerà affatto. Potrei essere in grado di sfuggire all'interpretazione, ma nel caso di alcune variabili potrei non avere il lusso di conoscere abbastanza i valori per essere in grado di elaborarlo in qualsiasi cosa io possa gestire. - In realtà sembra che le parentesi non siano tollerate.
Una delle cose principali che devo fare è trasmettere i nomi dei volumi, il che è facilmente raggiungibile, ma questo non è abbastanza.
start cmd /c call echo \\?\Volume{6537febd-01bc-11d6-adb5-806e6f6e6963}\ ^& TIMEOUT 5 ^& PAUSE ^& test.bat
Questo potrebbe essere già trattato altrove e in tal caso il problema è che non trovo le parole chiave giuste o paralleli ai thread pertinenti.
setx "name" "variable"
scriverà, quindi non è necessario eseguire cmd con privilegi di amministratore, a meno che non si specifichi / M, quindi scriva su HK_LM e quindi sono necessari i privilegi di amministratore. Ma per quello che vuoi, non è necessario. Per cancellare una variabile precedentemente assegnata, si setx "name" ""
noti inoltre che le variabili setx non diventano operative nella sessione corrente, ma solo nelle sessioni successive. Utilizzare set
per la sessione corrente.
setx
comando che crea una variabile globale in cui puoi memorizzare la tua variabile in modo da poterla leggere dall'altra routine?