Başka bir CMD örneğini aramak ve ana örneğinden veri iletmek istiyorum.
Genel değişkenleri kullanma yolunun farkındayım, ancak bu durumda bu mümkün olmayacaktı çünkü endlocal ve köprüleme çok fazla sıkıntı yaratacaktı (onlarca değişkeni iletmek zorunda kalacaktı). Ayrıca, kolayca istediğim tüm verileri taşımak için geçici dosyaları kullanabileceğimi biliyorum, ancak bu istenmeyen ayak izlerini bırakacaktır. EDIT: setx oldukça başarılı bir şekilde kullanılabilir.
Özellikle argümanların ortak kullanım alanları boyunca bir şey arıyorum :
test.bat -setvar"variable"="value" -setvar...
Daha önce sınırlamaları olan bir yol buldum
Diğer iş parçacığı üzerinde start cmd sonuna bir komut ekleyebilir öğrendim
start cmd /c call "test.bat" ^& PAUSE
Elbette bunu tersine çevirebiliriz.
start cmd /c call PAUSE ^& TIMEOUT 5 ^& PAUSE ^& test.bat
Komutlar "" olamaz ve şüpheli özel karakterler olabilir. Bu karmaşık değişkenleri taşımaya çalışırken bir sorun sunar.
Özel karakterlerden bahsetmek:
start cmd /c call (PAUSE) ^& (TIMEOUT 5) ^& (REM !"#¤%&/=?`´^*"-.,_:;\*~¨) ^& test.bat
Bu hiç işe yaramayacak. Yorumdan kaçabilirim, ancak bazı değişkenler durumunda, elimden gelen herhangi bir şeyde işleyebilecek değerlerin yeterli olduğunu bilme lüksüne sahip olamayabilirim. - Aslında parantez içinde hoş görülmüyor.
Yapmam gereken en önemli şeylerden biri, kolayca elde edilebilecek hacim isimlerini geçmek, ancak bu yeterli değil.
start cmd /c call echo \\?\Volume{6537febd-01bc-11d6-adb5-806e6f6e6963}\ ^& TIMEOUT 5 ^& PAUSE ^& test.bat
Bu zaten başka bir yerde ele alınabilir ve eğer öyleyse, sorun ilgili konulara doğru anahtar kelimeleri veya paralelleri bulamam.
setx "name" "variable"
yazabilir, böylece / M belirtmediğiniz sürece cmd'yi yönetici ayrıcalıklarıyla çalıştırmanız gerekmez, sonra HK_LM'ye yazar ve sonra yönetici ayrıcalıklarına ihtiyacınız vardır. Ama istediğin şey için, bu gerekli değil. Önceden atanmış bir değişkeni silmek için setx "name" ""
Ayrıca, setx değişkenlerinin mevcut oturumda, sadece bir sonraki oturumda çalışmadığını unutmayın. set
Geçerli oturum için kullanın .
setx
değişkeninizi saklayabileceğiniz global bir değişken oluşturan komutu kullanamamanızın bir nedeni var, böylece onu diğer rutinden geri okuyabilirsiniz?