7

テキスト ファイルを読み取り、各行を配列に格納したいと考えています。以下のコードを使用すると、毎回"echo %i%"印刷され、値のみが割り当てられます。しかし、では、値は最後にインクリメントされた I 値として割り当てられます。値を印刷する代わりに、同様に印刷しています。コードに構文エラーはありますか?0array[0]"set n=%i%"n"@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]!
4

4 に答える 4

14

時々便利で、コードに非常によく似たメソッドを次に示します。

@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]%%
于 2013-09-18T10:37:38.643 に答える
0
@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

「:」で始まる行がない場合

于 2013-09-18T08:54:22.987 に答える
0

set /?環境のランタイム リンクに関する説明を読みます。%i%内部で使用している場合は、実行前にfor事前に展開されます。代わりに使用する必要があります。 for!i!

于 2013-09-18T07:37:28.050 に答える