0

Java ファイルから文字列配列の形式でコマンドを渡すバッチ ファイルがあります。コマンドには次のようなものが含まれます。

String[] commands = {"A", 
                     "B", 
                     "C", 
                     "C:\users\user\Documents",
                     "C:\users\user\Pictures"}

コマンド配列は、Java プログラムが実行されるたびに変化するため、動的です。バッチ ファイルで、最初の 3 つの要素 (この場合は A、B、および C) の値を取得する変数を作成します。次に、ディレクトリ文字列をシフトして、配列の最初の 3 つの要素を取得する必要があります。これまでのバッチコードは次のとおりです。

@echo off
setlocal enableDelayedExpansion
set /A paramCount=0
for %%x in (%*) do (
    set list[!paramCount!]=%%x
    set /A paramCount=paramCount+1
)
set argA=%list[0]%
set argB=%list[1]%
set argC=%list[2]%

set /A old=0
set /A new=!old!+3
for /F "tokens=2 delims==" %%a in ('set list[') do (
    echo old=!old!
    echo new=!new!
    set list[!old!]=!list[%new%]!
    echo !list[%old%]!
    set /A old=!old!+1
    set /A new=!new!+1 ) 

私が抱えている問題は、行にありset list[!old!]=!list[%new%]!ます。ご覧のとおり、遅延拡張を有効にしました。ただし、配列内の要素をエミュレートする list[...] 変数には !! が必要です。ただし、「新規」にも遅延展開を使用する必要があると思います。この場合、どうすればよいですか?それとも、それは実際の問題ではないのでしょうか? 「古い」変数と「新しい」変数は正しくインクリメントされていますが、echo !list[%old%]!行は毎回同じ値を返します。その行には同じ問題が存在すると予想されますが、「古い」-- ! で囲まれている必要がありますが、! は既に list[...] 変数に使用されています。では、ネストされた ! がステートメントに必要な場合はどうなるでしょうか? 助けてくれてありがとう!

4

1 に答える 1