2016-03-28 1 views
2

テキストファイルから値を読み取り、設定するバッチファイルがあります。タブデリミタが機能しないバッチコマンド

for /f "tokens=* delims=<TAB>" %%x in (input.txt) do set %%x 

テキストファイル(INPUT.TXT):

a=one  b=two  c=three d=four 

しかし、変数が正しく設定されていない は、しかし、テキストファイルには、さまざまな変数

バッチファイルコマンドのタブが含まれています。ここ

答えて

3

2点:あなたはスペースを無視する場合を除き、あなたは、delims=オプションを含める必要はありませんので、

  • デフォルトdelims=値は、区切り文字としてスペースとタブを含めますデリミタとして!

  • あなたtokens=*オプションは、行のすべてのトークンが含まれているあなたのforコマンド(この場合は%%x)につのトークン文字を定義します。あなたはtokens=1-4を指定する必要が4トークンを取得したい場合は、別のものにトークン文字を開始し、それに応じて各トークンを処理:

を。

for /f "tokens=1-4" %%a in (input.txt) do (
    set "%%a" & set "%%b" & set "%%c" & set "%%d" 
) 
1

あなたのテキストファイルは、(トークンの異なる/未知の番号付き)数行た場合、これは、でも動作します:トリックは

@echo off 
setlocal enabledelayedexpansion 
for /f "tokens=*" %%i in (input.txt) do (
    set line=%%i 
    for %%x in ("!line: =","!") do set %%x 
) 

です:引用符で文字列を囲むことによって、区切り文字が扱われていません区切り文字としてこれ以上使用できません。

喜ん for %%x ...

で処理することができ
"a=one","b=two","c=three","d=four" 

:だから、文字列の最初と最後に引用符を追加し、「引用コンマ引用」とそれぞれTABを交換することに文字列を変更します

関連する問題