2017-03-09 145 views
0

各.xmlファイルに対してコマンドを実行するバッチスクリプトを作成します。コマンドは、_mで終わらないすべてのファイルに対して実行する必要があります。各ファイルをforfilesで調べようとしますが、使用方法はわかりませんdo togheter。forfilesバッチスクリプト内で複数のコマンドを実行する方法

これは私たちが現在実行していないスクリプトです。すべてのファイルを調べます。ファイル名を指定して、コマンドが実行されないように部分文字列を指定します(末尾が_m)。

forfiles /p /source /m *.xml do (

set "[email protected]" 
set "extension=_m.xml" 
set "extended=%filename%extension" 


IF NOT %filename:~-2%=="_m"(
    ssoadm import-entity --cot something--realm something--spec saml2 -m @file -x %extended --adminid something--password-file password --debug 
) 

ありがとうございました! directorynames無しdir/bにおける基本的な形(名前のみ)/a-dの各エントリの

+1

外部のforfilesコマンドの代わりに組み込み 'for'コマンドを使うだけで、' do'を使うことができます。 –

答えて

1
for /f "delims=" %%a in (
'dir /b /a-d *.xml^|findstr /v /e /i /L "_m.xml" ' 
) do (
    ssoadm import-entity --cot something--realm something--spec saml2 -m "%%a" -x %extended --adminid something--password-file password --debug 
) 

/vはない/eエンドん名前を見つける/i大文字と小文字を区別しない/L%%a

ssoadmが何をするかは考えに見つかった完全な名前を割り当てますが、

%%~naは、のベース名を得られます文字通り「-m.xml」ファイル、拡張子は%%~xaです。

あなたのコードが動作するかもしれませんが、あなたはdelayed expansionを呼び出す(SO検索)および(SOに多く、何度も記載されている)としてdelayedexpansion方法に合わせてコードを変更する必要があると思い


for /f "delims=" %%a in (
'dir /b /a-d *.xml^|findstr /v /e /i /L "_m.xml" ' 
) do (
    echo(%%~na 
    echo(%%~xa 
    echo(%%~nxa 
    echo(%%a 
    echo(%%a %%~na_M%%~xa 
) 

。 ..パーツ/定数をあなたが望むようにピックアップし、メーカンスタイルでまとめてください。

+0

助けてくれてありがとう。私はまだそれを私が欲しいものにしてはいけない。 file1.xml、file1_m.xml、file2.xml、file2_m.xmlの4つのファイルがあり、それぞれのコマンドでペアを使用する必要があるとします。それ、どうやったら出来るの?これは実行したいコマンドです: 'somecommand -x file1.xml -m file1_m.xml'と ' somecommand -x file2.xml -m file2_m.xml' – Jinxen

関連する問題