Saya mengalami banyak masalah dengan skrip ini. Seharusnya membaca file (yang ditentukan pengguna) lalu menyimpannya ke storeresult
variabel lingkungan.
Saya menggunakan konverter BAT To EXE yang tidak mempengaruhi perintah batch, jadi bukan itu. (Hanya jika Anda bertanya-tanya mengapa saya menelepon storvar
dari pada storvar.bat
)
Naskah utama ( storvar.exe
):
set a=%~1
set b=%~2
set c=%~3
for /f "delims=" %%a in (stor\%a%.stor) do set storeresult=%%a
pause
Skrip yang saya gunakan untuk memanggil skrip (Tidak ada kesalahan saat memanggil):
storevar Hi hi
pause
echo %storeresult%
pause
Ketika saya menyebutnya, itu hanya mengembalikan hasilnya ( %storeresult%
) karena tidak ada, saya tidak dapat menemukan masalah!
windows
batch-file
environment-variables
ZeekPlayz
sumber
sumber
stor\Hi.stor
? Di mana Anda menulis file ini? Harap tunjukkan semua kode Anda jika Anda mengharapkan jawaban.Jawaban:
Saat Anda mencoba mendefinisikan dan menggunakan variabel, Anda harus selalu memperhatikan variabelnya cakupan .
Variabel lingkungan yang Anda tentukan menggunakan
set
perintah hanya valid dalam lingkup proses di mana mereka didefinisikan. Mudah dibuktikan dengan eksperimen:set a = b
. Menggunakanset
untuk memverifikasi bahwa itu didefinisikan dengan benar.set
. Kamu melihatnyaa
tidak didefinisikan dalam lingkup ini.storvar.exe
adalah proses yang terpisah. Karenanya, ia memiliki ruang lingkup tersendiri. Apapun variabel lingkungan yang Anda tetapkan di dalamnya tetap ada dan dihapus ketika keluar.Jadi, adakah alternatif? Baiklah. Saya sendiri menggunakan PowerShell sebagai ganti file batch yang sudah usang; itu dapat mengekstrak hal-hal dari file dan langsung menggunakannya atau memancarkannya ke skrip berikutnya. (Microsoft secara resmi mendukung kompilasi PowerShell ke EXE, meskipun Anda juga dapat menemukan yang berorientasi pemula di TechNet Gallery.) AutoIt adalah alternatif lain.
sumber