untuk / perintah f tidak bekerja dengan baik (untuk saya)

-1

Saya punya masalah dengan sesuatu. Saya seorang pemula dan noob dalam batch sangat menyesal jika ini adalah pertanyaan bodoh. Saya membuat file teks seperti ini:

User/Jack

Password/Pancake

Status/Hello

Saya hanya ingin menunjukkan kata sandi, jadi saya menggunakan perintah untuk / f. ;

for /f "delims=/ skip=1 tokens=2" %%a in (Users.txt) do (
    set Password=%%a 
)

Ketika saya mencobanya, "Halo" muncul di jendela cmd saya. Saya sudah mencoba untuk memperbaikinya selama berjam-jam tetapi saya belum menemukan solusi. Bisakah kalian membantu saya?

Terima kasih sebelumnya!

Poseidon
sumber

Jawaban:

1

Pada setiap loop perulangan (iterasi) Anda memberikan token teks ke "Kata Sandi", menimpa apa pun yang ada di dalamnya. Jadi setelah For loop selesai, "Kata Sandi" akan berisi Hellokarena ini adalah hal terakhir yang Anda tetapkan untuk "Kata Sandi".

Saya berasumsi Anda memiliki echo passwordatau sama setelah loop untuk menampilkannya; jika demikian, pindahkan itu ke dalam loop sehingga menampilkan variabel pada setiap iterasi dari loop.

Ƭᴇcʜιᴇ007
sumber
1

Anda dekat dengan solusi, tetapi Anda melewatkan baris pertama, lalu memproses masing-masing baris yang tersisa, sehingga nilai yang dihasilkan selalu dari baris terakhir .

Salah satu solusi yang terjadi pada saya adalah: -

for /f "delims=/ tokens=1*" %%a in (Users.txt) do (
    if "%%a" == "Password" set Password=%%b 
)

Ini membaca setiap baris dan membaginya menjadi %%a, teks sebelum /, dan %%b, sisa baris setelah /. The Passwordvariabel diatur hanya ketika field pertama pertandingan.

AFH
sumber
Terima kasih banyak! Ini sangat membantu saya! Terima kasih kawan :)
Poseidon
0

Ada beberapa cara untuk memperbaikinya, tetapi cara termudah dalam kasus Anda adalah dengan memesan ulang "users.txt" dan letakkan baris terakhir sebagai "Kata Sandi / Pancake" dan setel nilai "lompati" Anda ke 2. Ini akan memperbaiki masalah Anda.

Saya sarankan untuk mengulang script dengan cara yang lebih umum sehingga Anda benar-benar dapat mengambil sesuatu yang Anda tidak tahu posisi.

IronWilliamCash
sumber
Saya minta maaf untuk mengatakan ini, tetapi dari sudut pandang programmer, itu tidak pernah merupakan saran yang baik untuk mengubah input sedemikian rupa sehingga skrip Anda mulai bekerja. Saya tidak akan memilih jawaban Anda, karena secara teknis Anda benar, tetapi ini adalah praktik yang buruk dan tidak disarankan untuk melakukannya.
LPChip
@ LPChip: Saya setuju, tapi ini memperbaiki masalah. Itu sebabnya saya merekomendasikan di bagian bawah untuk mengulang naskah dengan cara yang umum. Saya sendiri tidak punya waktu untuk mengulang seluruh naskah.
IronWilliamCash