http://ss64.com/nt/syntax-args.htmlの記事「PassingbyReference」には、次のことが記載されています。
コマンドラインで数値または文字列値を渡すことに加えて、変数名を渡し、その変数を使用してスクリプトまたはサブルーチン間でデータを転送することもできます。
しかし、どうすればよいですか?変数の値を設定し、その名前を次のように渡すと
set parm=42
call sub.bat parm
どのように使用しsub.bat
ますか?
http://ss64.com/nt/syntax-args.htmlの記事「PassingbyReference」には、次のことが記載されています。
コマンドラインで数値または文字列値を渡すことに加えて、変数名を渡し、その変数を使用してスクリプトまたはサブルーチン間でデータを転送することもできます。
しかし、どうすればよいですか?変数の値を設定し、その名前を次のように渡すと
set parm=42
call sub.bat parm
どのように使用しsub.bat
ますか?
遅延拡張を介して
@echo off
setlocal
set var1=value1
set var2=value2
call :sub var1
call :sub var2
exit /b
:sub
setlocal enableDelayedExpansion
echo %~1=!%~1!
exit /b
-出力-
var1=value1
var2=value2
それらを名前で参照します。1.batから実行される2.batは同じ環境ブロックを継承するため、
1.BAT
set parm=42
echo parm is '%parm%'
call 2.bat
echo parm is '%parm%'
2.BAT
set parm=XXX%parm%XXX
印刷します:
parm is '42'
parm is 'XXX42XXX'
(を使用すると、のsub.batでcall sub.bat %parm%
コピーを利用できるようになります)parm
%1