2017-11-13 5 views
0

文字列の一部を抽出してします:文字列のためのバッチスクリプトは、私は別のバッチスクリプト(BATCH2)に読み込みますバッチスクリプトを必要とする

  • 見て「configoutを」これらの2つの文字列のいずれかが検出された場合は、文字列 ".xml"
  • までの文字列を抽出して新しいテキストファイルに貼り付けます。
  • これをbatch2の行ごとに行います。 exempleについては

:私は良いコードを見てきました

%faxml%fa_sellin_in.xml 
%faxml%transco_fm_sellin_out%col_transco%.xml 

: これはバッチスクリプト

/configin:%faxml%fm_sellin_in.xml /configout:%faxml%transco_fm_sellin_out%col_transco%.xml /inputfile: 

の私の最初の行である場合、私は私のテキストファイルでこれを持っている必要がありますHere

for /f "tokens=1-2 delims=~" %%b in ("yourfile.txt") do (
    echo %%b >> newfile.txt 
    echo removed %%a) 

しかし、私はそれを私の特定のケースに適応させる方法を知らない。

答えて

1

/configin/configoutを改行で置き換えてみませんか? - 例えば

Replace string with a new line in Batch

setlocal EnableDelayedExpansion 

set "str=/configin:%%faxml%%fm_sellin_in.xml /configout:%%faxml%%transco_fm_sellin_out%%col_transco%%.xml /inputfile:" 

set str=!str:/configin^:=^ 

! 
set str=!str:/configout^:=^ 

! 

さて、!str!はその後

fm_sellin_in.xml 
transco_fm_sellin_out.xml /inputfile: 

を含んでいるでしょう、あなたは文字列

for /f "tokens=1,2 delims=. " %%a in ("!str!") do() 
を抽出するために forループを使用することができます

このforループは、各行を繰り返し、各行を.文字で分割します。

したがって、%%aがファイル名、%%bが拡張子です。

その後、

if [%%b]==[xml] (echo %%a.%%b>>mytextfile.txt) 

我々はBATCH2のすべての行のためにこれを行います。

そして、完成したコードは、それは非常にうまく機能

setlocal EnableDelayedExpansion 

for /f "delims=" %%c in (batch2.txt) do (
set str=%%c 
set str=!str:/configin^:=^ 

! 
set str=!str:/configout^:=^ 

! 
for /f "tokens=1,2 delims=. " %%a in ("!str!") do (if [%%b]==[xml] (echo %%a.%%b>>mytextfile.txt)) 
) 
+0

ではそれが私が探していたものだ、ありがとう。 ^の意味は何ですか?また、(xml)の代わりに[xml]を使用した理由を教えてください。 –

+0

@ R.Omar '%%'と '^'は、 '!var:find = replace!'や '%var%'構文の一部ではなく、それを文字として扱うようにするためのエスケープ文字です。 [%% b]はコマンドラインパラメータであるため、 '(xml)'の代わりに '[xml]'を使用しました。 – loadingnow

関連する問題