2016-09-09 18 views
2

すでに尋ねられていると言う前に、私は知っています。私は過去1時間にこれを研究していますが、それがなぜ機能していないのかまだ分かりません。以下に示すように、私は直接、まったく同じ質問への答えからコードをコピーして貼り付けました:テキストファイルから変数に値を渡す

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
set vidx=0 
pause 
FOR /F "tokens=*" %%A IN (file.txt) do (
    SET /A vidx=!vidx! + 1 
    set var!vidx!=%%A 
    pause 
) 
set var 

pause 

、「file.txtは」は何のスペースを持っていない場合、これは、完全に正常に動作します。しかし、ファイル名にスペースが含まれていると、すべてが無駄になります。私は引用符で名前を入れましたが、すべてのプログラムはvar1に "space.txtを含むファイル"と設定されています。実際には、スペースに関係なく、どこでも引用符を入れてください。私はそれが本当に簡単な答えだと確信しています、私はそれを見つけるように見えません。

ご協力いただきありがとうございます。それは十分に文書化されていない事実として

@echo off 
setlocal ENABLEDELAYEDEXPANSION 
set vidx=0 
pause 
FOR /F "useback tokens=*" %%A IN ("file.txt") do (
    SET /A vidx=!vidx! + 1 
    set var!vidx!=%%A 
    pause 
) 
set var 

pause 

答えて

2

あなたはそれで二重引用符やスペースを含むファイルパスを指すようにできるようになりますオプション(あなたもusebackqを使用することができます)usebackでこれを試してみてください(コマンドのヘルプメッセージの抜粋のため)のM $による:

/F [ "オプション"](ファイルセット)の%変数は、コマンド[コマンドパラメータ]/F FOR

をDO [ "OPTIO FOR "(文字列")NS IN]%変数 "/ Fのコマンド[コマンドパラメータ]

をDO [" オプション "]( 'コマンド')の%変数DOコマンド[コマンドパラメータ]

か、usebackqオプション存在する場合:(ファイルセット)IN/F [ "オプション"]%変数の

は、/ F(IN [ "オプション"]%変数」のコマンド[コマンドパラメータ]

をDO文字列 ')DOコマンド[コマンドパラメータ]

FOR/F ["options"]%variable IN(command)DOコマンド[コマンドパラメータ]

+0

Works !!!どうもありがとうございます。なぜそれが機能していないのかを調べるのにずっと時間を費やしていましたが、大きな頭痛と時間が無駄になった後、私はここで尋ねることにしました。心から感謝する! – Silver

関連する問題