0

文字列をテキストファイルの行と連結しようとしていますが、コードに問題があり、Forサイクルで使用しているagrumentsであると信じています。誰かが私を助けることができれば私はそれを大いに感謝します。

私のコードは次のとおりです。

@echo off
set "input=C:\Users\123\Desktop\List.txt"
for /f "usebackq tokens=*" %%F in ("%input%") do (
        set "str1=C:\some directory\"
    set "str2=%%~F"
    set "str3=.pdf"
    set "str4=%str1%%str2%%str3%"
    echo.%str4%
)

テキストファイルは次のようなものです。

121122
122233
123344
124455

しかし、私は間違った答えを得ているだけで、実際の結果を得るには3回実行する必要があり、それは間違っています。最初の2つは空白で、3つ目はテキストファイルの最後の行を返しますが、n回繰り返されます。 、nは、テキストファイルの行数です。

結果:

C:\Users\123\Desktop>concatenate.bat





C:\Users\123\Desktop>concatenate.bat





C:\Users\123\Desktop>concatenate.bat
C:\some directory\124455.pdf
C:\some directory\124455.pdf
C:\some directory\124455.pdf
C:\some directory\124455.pdf
C:\some directory\124455.pdf

C:\Users\123\Desktop>

それで、誰かが何が悪いのかについての手がかりを持っているならば、私に知らせてください。

よろしく

-ビクター-

4

1 に答える 1

0

Enable Delayed Expansion機能が必要です。FORコマンド ブロック内では、変更された変数を参照する必要があるため、必須です。

@echo off
setlocal enabledelayedexpansion
set "input=C:\Users\123\Desktop\List.txt"
for /f "usebackq tokens=*" %%F in ("%input%") do (
    set "str1=C:\some directory\"
    set "str2=%%~F"
    set "str3=.pdf"
    set "str4=!str1!!str2!!str3!!"
    echo. !str4!
)
于 2012-09-17T11:54:15.980 に答える