![](/img/trans.png)
[英]Insert text at a particular line number in a text file using batch script
[英]Reading a text file line by line and storing it in an array using batch script
我想讀取一個文本文件並將每一行存儲在一個數組中。 當我使用下面的代碼時, "echo %i%"
每次都打印0
並且只分配了array[0]
值。 但是在"set n=%i%"
, n
值被指定為最后一個遞增的I值。還有"@echo !array[%%i]!"
正在打印!array[0]!
而不是打印值。 代碼中是否有語法錯誤?
set /A i=0
for /F %%a in (C:\Users\Admin\Documents\url.txt) do (
set /A i+=1
echo %i%
set array[%i%]=%%a
)
set n=%i%
for /L %%i in (0,1,%n%) do @echo !array[%%i]!
這是一個有時非常有用且與代碼非常相似的方法:
@echo off
set "file=C:\Users\Admin\Documents\url.txt"
set /A i=0
for /F "usebackq delims=" %%a in ("%file%") do (
set /A i+=1
call echo %%i%%
call set array[%%i%%]=%%a
call set n=%%i%%
)
for /L %%i in (1,1,%n%) do call echo %%array[%%i]%%
@echo off &setlocal enabledelayedexpansion
for /F "delims=" %%a in (C:\Users\Admin\Documents\url.txt) do (
set /A count+=1
set "array[!count!]=%%a"
)
for /L %%i in (1,1,%count%) do echo !array[%%i]!
在代碼塊中,您需要delayed expansion
和!variables!
。
讀set /?
有關環境運行時鏈接的說明。 當您使用%i%
里面for
-這是預發泡前 for
執行。 你需要使用!i!
代替。
@ECHO OFF
SETLOCAL
FOR /f "tokens=1*delims=:" %%i IN ('findstr /n /r "$" url.txt') DO SET max=%%i&SET array[%%i]=%%j
FOR /l %%i IN (1,1,%max%) DO CALL ECHO(%%array[%%i]%%
GOTO :EOF
沒有線開始“:”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.