コマンドの複数行の実行結果を変数に代入
無線LANのMACアドレスとコンピュータ名を取得し、サーバー上にあるCSVファイルに書き込む
@ECHO OFF
NET USE Z: <サーバーへのパス> <パスワード> <ユーザー名>
@ECHO “MACアドレスを登録します”
FOR /F %%a IN (‘ECHO “%COMPUTERNAME%”^,’) DO SET PCNAME=%%a
FOR /F “delims=*” %%i IN (‘getmac /v /fo csv ^| findstr ワイヤレス’) DO @SET MAC=%%i
ECHO %PCNAME% %MAC%>>z:\hogehoge.csv
NET USE Z: /delete
@ECHO “MACアドレスの登録が完了しました”
PAUSE
西海岸より
10 Users
15 Pockets
バッチファイルで環境変数にコマンドの実行結果を格納(複数行) - 西海岸より
linuxのシェルだと val=`ls` のように簡単にコマンドの実行結果を代入できるのだけれど、windowsのバッチの場合は工夫が必要。 ソース(onebatcmd.bat) for /f "usebackq tokens=*" %%i in (`echo hoge`) do @set RESULT=%%i echo %RESULT%環境変数RESULTに「echo hoge」のコマンド実行結果を格納している。 実行結果 C:\test\test100208>onebatcmd.bat hogeただ、複数行が出力されるバッチの場合だと最後の行だけ出力されてしまう。。。 実行結果(dirコマ…
実行結果を複数行格納
@echo off
setlocal enabledelayedexpansion
set RESULT=
for /f "usebackq tokens=*" %%i in (`dir`) do (
set RESULT=!RESULT!^
%%i
)
echo !RESULT!
endlocal
for文の中で値を変化させたい場合はfor文全体を、「setlocal enabledelayedexpansion」と「endlocal」で挟む。
for文内で使用する変数は「%」ではなく「!」で囲む。
@echo off
setlocal enabledelayedexpansion
set sum=0
for /l %%n in (1,1,10) do (
set /a sum=!sum!+%%n
echo !sum!
)
endlocal