サンプル集  >  MS-DOS  >  IF文とSET
IF文とSET
2018/05/07

IF文の中でSETで変数に値を設定しても設定されないとの話があったのでテストしてみます。

◆環境
OS Windows 7 Service Pack1 64bit
Windows Server 2016 Datacenter
MS-DOS 6.1.7601

IF文内でSETで値を設定して表示するバッチを作ります。 echo を off にしてしまうと動きが分かりにくくなってしまうのでそのままにしました。

settest.bat
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
set SRC=C:\svn1\src
set DST=dst

IF %SRC:~-3,3% EQU src (
    set SRC=C:\svn2\debug\src
    set DST=E:\test
) ELSE (
    set SRC=error1
    set DST=error2
)

echo %SRC%
echo %DST%
pause

実行してみます。

> set SRC=C:\svn1\src

> set DST=dst

> IF src EQU src (
set SRC=C:\svn2\debug\src
 set DST=E:\test
)  ELSE (
set SRC=error1
 set DST=error2
)

> echo C:\svn2\debug\src
C:\svn2\debug\src

> echo E:\test
E:\test

> pause
続行するには何かキーを押してください . . .

ちゃんとIF文内のSETも機能していますね。

このバッチファイルを Windows Server 2016 Datacenter でも動かしましたが同じ動作でした。

しかし、IF文のヘルプを IF /? で表示してみると、delコマンドは上手く動かないと書いてありました。

del コマンドは、改行で終了しなければならないため、次の例は、正しく動作しません:

少しくせがありそうですね。

▲ PageTop  ■ Home


Copyright (C) 2018 ymlib.com