teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

コードに間違いがあったので修正

2019/04/07 03:07

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -1,41 +1,37 @@
1
- どうやら、私の回答記載の「以下を省略した記述」に誤りがあるようです。
2
- 質問記載のコードと私の回答記載のコードで結果に相違があります。
1
+ 当初記載した「以下を省略した記述」に誤りがあった為、質問記載のコードと私の回答記載のコードで結果に相違があります。
3
- 質問記載の場合、```if```(```else if```)の条件で、command(cmd)がどのように解釈るのか現状不明
2
+ 質問記載の```if```(```else if```)の条件を省略せず展開た物を正し物に書き換えました
4
3
 
5
4
  ----
6
5
 
7
- 質問記載のif 文は都合よく記述されてますが以下を省略した記述になります。
8
- 変数```B1```が```FALSE```の場合はすべて、```REM (1)```のところに入ります。
9
- ```FALSE FALSE FALSE```の場合以外は```words```に値は入りません。
6
+ 質問記載のif 文は都合く記述されますが以下を省略した記述になります。```B1=FALSE```、```B2=TRUE```の場合```words```に値は入りません。
10
7
 
11
8
  ```BAT
12
9
  if "%B1%" == "TRUE" (
13
10
  set words="%B1% %B2% %B3% Result1"
14
11
  ) else if "%B1%" == "FALSE" (
15
- REM (1)
16
12
  if "%B2%" == "FALSE" (
17
13
  if "%B3%" == "FALSE" (
18
14
  set words="%B1% %B2% %B3% Result2"
15
+ ) else if "%B1%" == "FALSE" (
16
+ if "%B2%" == "FALSE" (
17
+ if "%B3%" == "TRUE" (
18
+ set words="%B1% %B2% %B3% Result3"
19
+ ) else if "%B1%" == "FALSE" (
20
+ if "%B2%" == "TRUE" (
21
+ if "%B3%" == "FALSE" (
22
+ set words="%B1% %B2% %B3% Result4"
23
+ ) else if "%B1%" == "FALSE" (
24
+ if "%B2%" == "TRUE" (
25
+ if "%B3%" == "TRUE" (
26
+ set words="%B1% %B2% %B3% Result5"
27
+ )
28
+ )
29
+ )
30
+ )
31
+ )
32
+ )
19
33
  )
20
34
  )
21
- ) else if "%B1%" == "FALSE" (
22
- if "%B2%" == "FALSE" (
23
- if "%B3%" == "TRUE" (
24
- set words="%B1% %B2% %B3% Result3"
25
- )
26
- )
27
- ) else if "%B1%" == "FALSE" (
28
- if "%B2%" == "TRUE" (
29
- if "%B3%" == "FALSE" (
30
- set words="%B1% %B2% %B3% Result4"
31
- )
32
- )
33
- ) else if "%B1%" == "FALSE" (
34
- if "%B2%" == "TRUE" (
35
- if "%B3%" == "TRUE" (
36
- set words="%B1% %B2% %B3% Result5"
37
- )
38
- )
39
35
  )
40
36
  ```
41
37
 

3

コメントに対して追記

2019/04/07 03:07

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -1,3 +1,9 @@
1
+ どうやら、私の回答記載の「以下を省略した記述」に誤りがあるようです。
2
+ 質問記載のコードと私の回答記載のコードで結果に相違があります。
3
+ 質問記載の場合、```if```(```else if```)の条件で、command(cmd)がどのように解釈しているのか現状不明。
4
+
5
+ ----
6
+
1
7
  質問記載のif 文は都合よく記述されてますが以下を省略した記述になります。
2
8
  変数```B1```が```FALSE```の場合はすべて、```REM (1)```のところに入ります。
3
9
  よって、```FALSE FALSE FALSE```の場合以外は```words```に値は入りません。

2

追記

2019/04/07 02:53

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -31,4 +31,20 @@
31
31
  )
32
32
  )
33
33
  )
34
+ ```
35
+
36
+ 複数の変数に対して組み合わせを```if```文で記述する場合は以下のようにすると簡潔に書けます
37
+
38
+ ```BAT
39
+ if "%B1%" == "TRUE" (
40
+ set words="%B1% %B2% %B3% Result1"
41
+ ) else if "%B1% %B2% %B3%" == "FALSE FALSE FALSE" (
42
+ set words="%B1% %B2% %B3% Result2"
43
+ ) else if "%B1% %B2% %B3%" == "FALSE FALSE TRUE" (
44
+ set words="%B1% %B2% %B3% Result3"
45
+ ) else if "%B1% %B2% %B3%" == "FALSE TRUE FALSE" (
46
+ set words="%B1% %B2% %B3% Result4"
47
+ ) else if "%B1% %B2% %B3%" == "FALSE TRUE TRUE" (
48
+ set words="%B1% %B2% %B3% Result5"
49
+ )
34
50
  ```

1

誤記修正

2019/04/06 06:28

投稿

Y.H.
Y.H.

スコア7918

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  質問記載のif 文は都合よく記述されてますが以下を省略した記述になります。
2
2
  変数```B1```が```FALSE```の場合はすべて、```REM (1)```のところに入ります。
3
- よって、```FALSE FALSE FALSE``の場合以外は```words```に値は入りません。
3
+ よって、```FALSE FALSE FALSE```の場合以外は```words```に値は入りません。
4
4
 
5
5
  ```BAT
6
6
  if "%B1%" == "TRUE" (