回答編集履歴

2

別のコードを追記

2023/08/22 07:11

投稿

otn
otn

スコア86277

test CHANGED
@@ -24,3 +24,38 @@
24
24
  ```
25
25
  (無駄な記述が沢山ありますが、間違いと言うことではないのでそのままにしてあります)
26
26
 
27
+ ## 追記
28
+ gotoを使わざるを得ない場合の対応。
29
+ ```CMD
30
+ @echo off
31
+ SET RESULT=C:\Users\chiba\Desktop\tetete\結果
32
+ CD %RESULT%
33
+
34
+ SETLOCAL ENABLEDELAYEDEXPANSION
35
+ FOR /D %%N IN (*) DO (
36
+ PUSHD %%N
37
+ SET X=%%N
38
+ call :SUB
39
+ POPD
40
+ )
41
+ exit /b
42
+ pause
43
+
44
+ :SUB
45
+ rem この部分ではgotoしても大丈夫
46
+ rem exit /b で for の繰り返しに戻る
47
+ SET DATA=C:\Users\chiba\Desktop\tetete\結果\!X!\DATA
48
+ SET DATA_IN=C:\Users\chiba\Desktop\tetete\結果\!X!\DATA.IN
49
+ IF EXIST "!DATA!\*.txt" IF EXIST "!DATA_IN!\*.txt" (
50
+ GOTO FIRST
51
+ ) ELSE IF EXIST "!DATA!\*.txt" IF NOT EXIST "!DATA_IN!\*.txt" (
52
+ GOTO SECOND
53
+ )
54
+ :FIRST
55
+ ECHO 〇
56
+ exit /b
57
+ :SECOND
58
+ ECHO ×
59
+ exit /b
60
+ ```
61
+

1

補足

2023/08/22 06:44

投稿

otn
otn

スコア86277

test CHANGED
@@ -1,4 +1,4 @@
1
- MSのドキュメントに明記されているのを見たことがないですが、for文の中でgotoするとその途端に「forの中にいた」という情報が失われてしまいます。
1
+ MSのドキュメントに明記されているのを見たことがないですが、for文の中でgotoするとその途端に「forの中にいた」という情報が失われてしまいます。なので、ループを継続できませんし、forの変数も参照できません。
2
2
  おそらく、こういうことがしたいのでは無いかと思います。
3
3
  ```CMD
4
4
  @echo off