質問編集履歴

4

可読性を考慮したコードの追記

2019/04/08 20:32

投稿

kaxzuma
kaxzuma

スコア14

test CHANGED
File without changes
test CHANGED
@@ -190,9 +190,9 @@
190
190
 
191
191
  * ifを連結した時にand風の挙動をする場合もあるがかならずしもそうならない
192
192
 
193
- * else if のあとで評価される条件式は一つ(他の言語のノリで連結できず、ifを連結したandもどきは利用できない)
193
+ * else if のあとで評価される条件式は一つ(ifを連結したandもどきは利用できない)
194
-
194
+
195
- * ネストが深く可読性は悪くなってもifの省略形使わない(ご回答ただいたようにネストない工夫は可能)
195
+ * ifの省略形使わない(可読性以前に正し処理が記述ない)
196
196
 
197
197
  ```Dos
198
198
 
@@ -257,3 +257,63 @@
257
257
 
258
258
 
259
259
  ```
260
+
261
+
262
+
263
+ ### 追記2
264
+
265
+ 可読性を上げたので追記します。
266
+
267
+ ```Dos
268
+
269
+ @echo off
270
+
271
+ setlocal
272
+
273
+
274
+
275
+ set B1=FALSE
276
+
277
+ set B2=FALSE
278
+
279
+ set B3=TRUE
280
+
281
+ set words=%B1% %B2% %B3%
282
+
283
+
284
+
285
+ if "%B1%" == "TRUE" (
286
+
287
+ set words="%words% Result1"
288
+
289
+ ) else if "%words%" == "FALSE FALSE FALSE" (
290
+
291
+ set words="%words% Result2"
292
+
293
+ ) else if "%words%" == "FALSE FALSE TRUE" (
294
+
295
+ set words="%words% Result3"
296
+
297
+ ) else if "%words%" == "FALSE TRUE FALSE" (
298
+
299
+ set words="%words% Result4"
300
+
301
+ ) else if "%words%" == "FALSE TRUE TRUE" (
302
+
303
+ set words="%words% Result5"
304
+
305
+ )
306
+
307
+
308
+
309
+ echo %words%
310
+
311
+
312
+
313
+ endlocal
314
+
315
+ exit /b 0
316
+
317
+
318
+
319
+ ```

3

解消版の追記

2019/04/08 20:32

投稿

kaxzuma
kaxzuma

スコア14

test CHANGED
File without changes
test CHANGED
@@ -179,3 +179,81 @@
179
179
  OS 名: Microsoft Windows 10 Home
180
180
 
181
181
  OS バージョン: 10.0.17763 N/A ビルド 17763
182
+
183
+
184
+
185
+ ### 追記(回答を踏まえた修正版)
186
+
187
+ Y.H.さんに頂いた最もスッキリした形ではありませんが、
188
+
189
+ 今回の反省を踏まえた修正版を追記します。
190
+
191
+ * ifを連結した時にand風の挙動をする場合もあるがかならずしもそうならない
192
+
193
+ * else if のあとで評価される条件式は一つ(他の言語のノリで連結できず、ifを連結したandもどきは利用できない)
194
+
195
+ * ネストが深く可読性は悪くなってもifの省略形は使わない(ご回答いただいたようにネストさせない工夫は可能)
196
+
197
+ ```Dos
198
+
199
+ @echo off
200
+
201
+ setlocal
202
+
203
+
204
+
205
+ set B1=FALSE
206
+
207
+ set B2=TRUE
208
+
209
+ set B3=TRUE
210
+
211
+
212
+
213
+ if "%B1%" == "TRUE" (
214
+
215
+ set words="%B1% %B2% %B3% Result1"
216
+
217
+ ) else if "%B1%" == "FALSE" (
218
+
219
+ if "%B2%" == "FALSE" (
220
+
221
+ if "%B3%" == "FALSE" (
222
+
223
+ set words="%B1% %B2% %B3% Result2"
224
+
225
+ ) else if "%B3%" == "TRUE" (
226
+
227
+ set words="%B1% %B2% %B3% Result3"
228
+
229
+ )
230
+
231
+ ) else if "%B2%" == "TRUE" (
232
+
233
+ if "%B3%" == "FALSE" (
234
+
235
+ set words="%B1% %B2% %B3% Result4"
236
+
237
+ ) else if "%B3%" == "TRUE" (
238
+
239
+ set words="%B1% %B2% %B3% Result5"
240
+
241
+ )
242
+
243
+ )
244
+
245
+ )
246
+
247
+
248
+
249
+ echo %words%
250
+
251
+
252
+
253
+ endlocal
254
+
255
+ exit /b 0
256
+
257
+
258
+
259
+ ```

2

コード内に記載された不要文字の削除

2019/04/08 14:04

投稿

kaxzuma
kaxzuma

スコア14

test CHANGED
File without changes
test CHANGED
@@ -12,13 +12,9 @@
12
12
 
13
13
  ### 該当のソースコード1
14
14
 
15
-
16
-
17
- ```DOS:iv.bat
15
+ ```dos
18
16
 
19
17
  @echo off
20
-
21
- コード
22
18
 
23
19
  setlocal
24
20
 
@@ -67,6 +63,8 @@
67
63
 
68
64
 
69
65
  ```
66
+
67
+ ※バッチファイル名はiv.bat
70
68
 
71
69
 
72
70
 
@@ -164,6 +162,16 @@
164
162
 
165
163
  ```
166
164
 
165
+ ### 実行結果(解消版)
166
+
167
+ ```
168
+
169
+ C:\pg\test>iv
170
+
171
+ "FALSE TRUE TRUE Result5"
172
+
173
+ ```
174
+
167
175
 
168
176
 
169
177
  ### 補足情報(FW/ツールのバージョンなど)

1

タイトルが不適切につき修正

2019/04/06 04:46

投稿

kaxzuma
kaxzuma

スコア14

test CHANGED
@@ -1 +1 @@
1
- バッチelse ifにて後半部分が処理されない理由
1
+ Windowsのバッチにてelse if後半部分が処理されません
test CHANGED
File without changes