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

質問編集履歴

4

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

2019/04/08 20:32

投稿

kaxzuma
kaxzuma

スコア14

title CHANGED
File without changes
body CHANGED
@@ -94,8 +94,8 @@
94
94
  Y.H.さんに頂いた最もスッキリした形ではありませんが、
95
95
  今回の反省を踏まえた修正版を追記します。
96
96
  * ifを連結した時にand風の挙動をする場合もあるがかならずしもそうならない
97
- * else if のあとで評価される条件式は一つ(他の言語のノリで連結できず、ifを連結したandもどきは利用できない)
97
+ * else if のあとで評価される条件式は一つ(ifを連結したandもどきは利用できない)
98
- * ネストが深く可読性は悪くなってもifの省略形使わない(ご回答いただいたようネストない工夫は可能)
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

解消版の追記

2019/04/08 20:32

投稿

kaxzuma
kaxzuma

スコア14

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

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

2019/04/08 14:04

投稿

kaxzuma
kaxzuma

スコア14

title CHANGED
File without changes
body CHANGED
@@ -5,10 +5,8 @@
5
5
  コードの記載方法も改善箇所のご指摘いただけますと助かります。
6
6
 
7
7
  ### 該当のソースコード1
8
-
9
- ```DOS:iv.bat
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

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

2019/04/06 04:46

投稿

kaxzuma
kaxzuma

スコア14

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