2017-10-29 18 views
0

バッチファイルには、いくつかのforループがあります。バッチ:複数回forループで変数を複数回使用する

exampleInputDir\weapon\%character%\thing1 
            \thing2 
            \thing3 

事の#1の各フォルダにはmotion.mtableファイルが含まれている

FOR /R "C:\exampleInputDir\weapon\%character%\" %%G IN (motion.mtable) DO (
    FOR %%b in ("%%~dpG\.") DO set "weaponname=%%~nxb" 
    FITD -le "%G%" -o "C:\exampleOutputDir\%character%\%weaponname%" 
    ) 

それは私が何をしようとしている明確でない場合は、私は複数回%G%変数を必要としますそれらの時間のうちの1つでは、少し変更して別の変数に入れる必要があるので、1つのコマンドで2回呼び出すことができます。

何かがわからない場合は、私に知らせてください、私は明確にしようとします! ありがとう!

EDITは:

FITD -le "exampleInputDir\weapon\%character%\thing#\motion.mtable" -o "C:\exampleOutputDir\%character%\thing#" 

と私は意図されているweaponname%%~nxb以来thing1、thing2、およびthing3

答えて

0
FITD -le "%G%" -o "C:\exampleOutputDir\%character%\%%~nxb" 

を介して実行するコマンドを希望:私はあることをその最後のコマンドをしたいと思います同じであること。

他の多くのものと同様に、delayedexpansionトラップに落ちています。あまりにも多くの例がありますので、search機能を使用してください。

ます。また delayedexpansionを有効にする setlocal/endlocalブラケットを使用したので、 code block内で変更変数の 実行時値にアクセスすることができるという問題

setlocal enabledelayedexpansion 
FOR /R "C:\exampleInputDir\weapon\%character%\" %%G IN (motion.mtable) DO (
    FOR %%b in ("%%~dpG\.") DO set "weaponname=%%~nxb" 
    FITD -le "%G%" -o "C:\exampleOutputDir\%character%\!weaponname!" 
    ) 
endlocal 

を解決するためにdelayedexpansionを使用することができ


(またはカッコで囲まれた一連の行)。

利点 - cognescenti
ため -

欠点(解析時間値として解決され%var%%var%の代わりに、!var!介して可変のランタイム値へのアクセスを可能にします - ブラケット内で確立または変更された値は、ブラケットが終了するまで生き残る。
- は変更された意味を持ち、特別な注意が必要です

+0

遅延拡張トラップを待ちますか?私は遅延拡大を必要とするかどうか? そしてありがとう、私は今行くよ:) – Yudowat

関連する問題