質問編集履歴
4
可読性を考慮したコードの追記
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -94,8 +94,8 @@
|
|
|
94
94
|
Y.H.さんに頂いた最もスッキリした形ではありませんが、
|
|
95
95
|
今回の反省を踏まえた修正版を追記します。
|
|
96
96
|
* ifを連結した時にand風の挙動をする場合もあるがかならずしもそうならない
|
|
97
|
-
* else if のあとで評価される条件式は一つ(
|
|
97
|
+
* else if のあとで評価される条件式は一つ(ifを連結したandもどきは利用できない)
|
|
98
|
-
*
|
|
98
|
+
* ifの省略形を使わない(可読性以前に正しい処理が記述されない)
|
|
99
99
|
```Dos
|
|
100
100
|
@echo off
|
|
101
101
|
setlocal
|
|
@@ -127,4 +127,34 @@
|
|
|
127
127
|
endlocal
|
|
128
128
|
exit /b 0
|
|
129
129
|
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 追記2
|
|
133
|
+
可読性を上げたので追記します。
|
|
134
|
+
```Dos
|
|
135
|
+
@echo off
|
|
136
|
+
setlocal
|
|
137
|
+
|
|
138
|
+
set B1=FALSE
|
|
139
|
+
set B2=FALSE
|
|
140
|
+
set B3=TRUE
|
|
141
|
+
set words=%B1% %B2% %B3%
|
|
142
|
+
|
|
143
|
+
if "%B1%" == "TRUE" (
|
|
144
|
+
set words="%words% Result1"
|
|
145
|
+
) else if "%words%" == "FALSE FALSE FALSE" (
|
|
146
|
+
set words="%words% Result2"
|
|
147
|
+
) else if "%words%" == "FALSE FALSE TRUE" (
|
|
148
|
+
set words="%words% Result3"
|
|
149
|
+
) else if "%words%" == "FALSE TRUE FALSE" (
|
|
150
|
+
set words="%words% Result4"
|
|
151
|
+
) else if "%words%" == "FALSE TRUE TRUE" (
|
|
152
|
+
set words="%words% Result5"
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
echo %words%
|
|
156
|
+
|
|
157
|
+
endlocal
|
|
158
|
+
exit /b 0
|
|
159
|
+
|
|
130
160
|
```
|
3
解消版の追記
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -88,4 +88,43 @@
|
|
|
88
88
|
|
|
89
89
|
### 補足情報(FW/ツールのバージョンなど)
|
|
90
90
|
OS 名: Microsoft Windows 10 Home
|
|
91
|
-
OS バージョン: 10.0.17763 N/A ビルド 17763
|
|
91
|
+
OS バージョン: 10.0.17763 N/A ビルド 17763
|
|
92
|
+
|
|
93
|
+
### 追記(回答を踏まえた修正版)
|
|
94
|
+
Y.H.さんに頂いた最もスッキリした形ではありませんが、
|
|
95
|
+
今回の反省を踏まえた修正版を追記します。
|
|
96
|
+
* ifを連結した時にand風の挙動をする場合もあるがかならずしもそうならない
|
|
97
|
+
* else if のあとで評価される条件式は一つ(他の言語のノリで連結できず、ifを連結したandもどきは利用できない)
|
|
98
|
+
* ネストが深く可読性は悪くなってもifの省略形は使わない(ご回答いただいたようにネストさせない工夫は可能)
|
|
99
|
+
```Dos
|
|
100
|
+
@echo off
|
|
101
|
+
setlocal
|
|
102
|
+
|
|
103
|
+
set B1=FALSE
|
|
104
|
+
set B2=TRUE
|
|
105
|
+
set B3=TRUE
|
|
106
|
+
|
|
107
|
+
if "%B1%" == "TRUE" (
|
|
108
|
+
set words="%B1% %B2% %B3% Result1"
|
|
109
|
+
) else if "%B1%" == "FALSE" (
|
|
110
|
+
if "%B2%" == "FALSE" (
|
|
111
|
+
if "%B3%" == "FALSE" (
|
|
112
|
+
set words="%B1% %B2% %B3% Result2"
|
|
113
|
+
) else if "%B3%" == "TRUE" (
|
|
114
|
+
set words="%B1% %B2% %B3% Result3"
|
|
115
|
+
)
|
|
116
|
+
) else if "%B2%" == "TRUE" (
|
|
117
|
+
if "%B3%" == "FALSE" (
|
|
118
|
+
set words="%B1% %B2% %B3% Result4"
|
|
119
|
+
) else if "%B3%" == "TRUE" (
|
|
120
|
+
set words="%B1% %B2% %B3% Result5"
|
|
121
|
+
)
|
|
122
|
+
)
|
|
123
|
+
)
|
|
124
|
+
|
|
125
|
+
echo %words%
|
|
126
|
+
|
|
127
|
+
endlocal
|
|
128
|
+
exit /b 0
|
|
129
|
+
|
|
130
|
+
```
|
2
コード内に記載された不要文字の削除
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -5,10 +5,8 @@
|
|
|
5
5
|
コードの記載方法も改善箇所のご指摘いただけますと助かります。
|
|
6
6
|
|
|
7
7
|
### 該当のソースコード1
|
|
8
|
-
|
|
9
|
-
```
|
|
8
|
+
```dos
|
|
10
9
|
@echo off
|
|
11
|
-
コード
|
|
12
10
|
setlocal
|
|
13
11
|
|
|
14
12
|
set B1=FALSE
|
|
@@ -33,6 +31,7 @@
|
|
|
33
31
|
exit /b 0
|
|
34
32
|
|
|
35
33
|
```
|
|
34
|
+
※バッチファイル名はiv.bat
|
|
36
35
|
|
|
37
36
|
### 実行結果
|
|
38
37
|
環境変数B1~B3を変更して各条件について網羅するようテストしました。
|
|
@@ -81,6 +80,11 @@
|
|
|
81
80
|
echo %words%
|
|
82
81
|
|
|
83
82
|
```
|
|
83
|
+
### 実行結果(解消版)
|
|
84
|
+
```
|
|
85
|
+
C:\pg\test>iv
|
|
86
|
+
"FALSE TRUE TRUE Result5"
|
|
87
|
+
```
|
|
84
88
|
|
|
85
89
|
### 補足情報(FW/ツールのバージョンなど)
|
|
86
90
|
OS 名: Microsoft Windows 10 Home
|
1
タイトルが不適切につき修正
title
CHANGED
|
@@ -1,1 +1,1 @@
|
|
|
1
|
-
バッチ
|
|
1
|
+
Windowsのバッチにてelse ifの後半部分が処理されません
|
body
CHANGED
|
File without changes
|