2016-03-28 2 views
1

バッチファイルでは、スペースを含む文字列をどのようにループするのですか?バッチファイルでは、スペースを含む文字列をどのようにループするのですか?

例えば、私が持っている:

for %%P in (Test 1,Test 2,Test 3) do (
echo %%P 
) 

私が手出力が

Test 
1 
Test 
2 
Test 
3 

の代わりに、私は期待しています出力されます:私は引用符に私を追加する場合

Test 1 
Test 2 
Test 3 

取得する

"Test 1" 
"Test 2" 
"Test 3" 

どちらもしたくないです。何か案は?

答えて

3

for /?あなたの回答があります。

%~I   - expands %I removing any surrounding quotes (") 

だから、このようにそれを実装したい:

FOR %%P IN ("Test 1","Test 2","Test 3") DO (echo %%~P) 
1

@Wesラーソンはそれに私を打つが、ここでは個々の引用符を必要とせずに文字列を分割する他の方法です。


分割する文字列は3つしかないと仮定します。

for /f "tokens=1,2,3 delims=," %%G in ("Test 1,Test 2,Test 3") do (
    echo %%~G 
    echo %%~H 
    echo %%~I 
) 

それとも私のお気に入り。

set "string=Test 1,Test 2,Test 3" 
set "chVar=%string%" 
:reIter 
for /f "tokens=1* delims=," %%G in ("%chVar%") do (echo %%G & set "chVar=%%H") 
if defined chVar (goto :reIter) 

と奇数が、オプション。

set "string=Test 1,Test 2,Test 3" 
set string=%string: =_% 
for %%G in (%string%) do call :replace "%%~G" 
pause 
exit 

:replace 
set "chVar=%~1" 
echo %chVar:_= % 
goto :eof 
関連する問題