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[...] 変数に使用されています。では、ネストされた ! がステートメントに必要な場合はどうなるでしょうか? 助けてくれてありがとう!