Saya mendapatkan "Saya tidak terduga saat ini." saat menggunakan di bawah ini untuk loop untuk beberapa kasus saja.
for /f "tokens=1,* delims=;" %%m in (file.txt) do (
echo Inside Loop
echo %%m
)
Saya memanggil file batch ini dari file batch lain dalam satu lingkaran. Jadi setiap saat, konten file.txt harus diubah.
Apakah konten file bermasalah?
Ini skrip lengkap:
echo off
SET FileName=%2
SET NUM=%3
:label
echo.
echo Parsing file.txt file
for /f "tokens=1,* delims=;" %%m in (file.txt) do (
echo Inside Loop
SetLocal EnableDelayedExpansion
echo %%n
SET str=%%m
SET "Number=!str::="^&REM #!
IF "!NUM!"=="" SET NUM="!number!"
if !number! GEQ !NUM! (
if /I not "!str:(ind)=!"=="!str!" (
echo It contains IND
) else >>"!FileName!" echo %1;!str!
echo %%n>Label_Name.txt
goto label
)
endlocal
)
:end
batch-file
user1553605
sumber
sumber
Jawaban:
Tanpa indikasi konten file Anda atau parameter yang Anda jalankan batch ini, itu murni dugaan, tapi saya curiga baris ini:
yang akan diatur
NUM
ke nilai yang dikutip.Mungkin kode yang lebih baik
tetapi juga - Anda menggunakan a
GOTO label
dalam aSETLOCAL enabledelayedexpansion
yang AFAIAA TIDAK mengakhiriLOCAL
lingkungan, maka semua pemrosesan sesudahnya akan denganSETLOCAL
dandelayedexpansion
berlaku. Kemungkinan untuk mengeksekusi ulangSETLOCAL Enable...
beberapa kali, membangun kedalaman yang lebih besar dan lebih besar dari lingkungan lokal .... IMHO diperbaiki terbaik.sumber
Setlocal
akan menghasilkan kesalahan overflow(ind)
mungkin tanda kurung penutupnya ditafsirkan sebagai akhir darido (
contohnya. Mencoba^)
dalam situasi ini, yang mengatakan 'literal, bukan arti khusus ")" `Namun demikian,SETLOCAL
masalah yang saya sebutkan perlu diperbaiki. Terbaik untukEDIT
data baru (parameter) ke pertanyaan Anda, di mana mereka lebih mudah untuk dikaitkan dan dapat diformat lebih baik. Juga menjadi ide untuk menempelkan sampelfile.txt
- katakan di sekitar tempat pemrosesan masalah terjadi.coba ini:
sumber
Mungkin bermanfaat untuk mengetahui lebih banyak tentang apa saja kasus-kasus itu. Tanpa perincian lebih lanjut, pertanyaan (dalam bentuk saat ini) sangat rentan terhadap jawaban yang melibatkan spekulasi.
Ini salah satunya, misalnya:
Jika Anda mengetik UNTUK / ?, Anda akan menemukan bahwa / F dijelaskan di bawah bagian yang mengatakan:
Menurut Dokumentasi CMD , menjalankan CMD / E: ON akan mengaktifkan ekstensi baris perintah. Kemudian, dokumentasi pihak ketiga mencatat bahwa menjalankan CMD / Y dapat digunakan untuk menonaktifkan ekstensi perintah dari dalam CMD (dan CMD / X dapat digunakan untuk mengaktifkan kembali).
Jadi jika Anda menemukan bahwa menjalankan file batch berfungsi dalam beberapa kasus, tetapi "UNTUK / F" tampaknya tidak mengenali opsi dalam kasus lain, masalahnya mungkin tidak disebabkan oleh kode sumber aktual yang Anda kutip. Masalahnya mungkin disebabkan oleh lingkungan yang menjalankan kode.
sumber