簡體   English   中英

逐行讀取文本文件並使用批處理腳本將其存儲在數組中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM