質問編集履歴

2

指摘を受けたので編集した

2022/03/15 07:36

投稿

spisytaka
spisytaka

スコア0

test CHANGED
@@ -1 +1 @@
1
- バッチが上手く動作しな
1
+ バッチを実行したところ、「文字列に終端記号 " ありません。」とうエラーが出る
test CHANGED
@@ -1,58 +1,74 @@
1
- 以下のコマンドを実行すると、
1
+ 目的
2
2
 
3
- rem リスト昇順でソートて重複していない行を抽出
3
+ 以下実現ようとしています。
4
- PowerShell -command "Get-Content %LOGDIR%\%TMPFILE2% | Sort-Object | Get-Unique -i -w 7 do echo %%C" >> %LOGDIR%\%TMPFILE3%
5
4
 
5
+ 特定のフォルダ内にあるファイルからz081490を除くファイル名のリストを抽出
6
+ 当日の日付でファイル名のリストを検索し、該当するもののリストを抽出
7
+ リストを昇順でソートして重複していない行を抽出
8
+ リストの行数をカウントし抽出
9
+
10
+ 問題点
11
+
12
+ しかし、以下のバッチを実行しても、
13
+
14
+ リストを昇順でソートして重複していない行を抽出
15
+
6
- のところで、
16
+ のところで、以下のエラーが出力されます。
7
17
 
8
18
  文字列に終端記号 " がありません。
9
- + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
19
+ + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
10
- + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
20
+ + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
11
21
 
12
- 文字列終端記号 " がありません。
22
+ 以下のようBOMを追加しても、このエラーは解消しません。
13
- + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
14
- + FullyQualifiedErrorId : TerminatorExpectedAtEndOfString
15
23
 
16
- というエラーが出てしまいます。
24
+ ((&{([byte[]] @(0xEF, 0xBB, 0xBF))}) + (get-content C:\Users\z095258\Desktop\check_file_r3.bat -encoding byte)) | set-content C:\Users\z095258\Desktop\check_file_r3.bat -encoding byte
17
25
 
18
- おそらく、すごく基本的なことが問題になっているものかと思いますが、原因と解決法などご教授できましたらうれしいです。
26
+ 実行したバッチ
19
27
 
28
+ rem @echo off
29
+ setlocal
30
+
31
+ set Y=%date:~0,4%
32
+ set M=%date:~5,2%
33
+ set D=%date:~8,2%
34
+
35
+ set LOGDIR="C:\temp\ESS-REC\Server\Log"
36
+ set RECFILE="E:\ESS REC\Server\Data\%Y%%M%"
37
+ set TMPFILE1="tmpfile1.txt"
38
+ set TMPFILE2="tmpfile2.txt"
39
+ set TMPFILE3="tmpfile3.txt"
40
+ set TMPFILE4="tmpfile4.txt"
41
+
42
+ copy / y nul %LOGDIR%\%TMPFILE1% > nul
43
+ copy / y nul %LOGDIR%\%TMPFILE2% > nul
44
+ copy / y nul %LOGDIR%\%TMPFILE3% > nul
45
+ copy / y nul %LOGDIR%\%TMPFILE4% > nul
46
+
47
+ PAUSE
48
+
49
+ rem ファイルからz081490を除くファイル名のリストを抽出
50
+ for /f "delims=" %%A in ('dir /B %RECFILE%\*.rec ^| find /v "z081490"') do echo %%A >> %LOGDIR%\%TMPFILE1%
51
+
52
+ PAUSE
53
+
54
+ rem 当日の日付でファイル名のリストを検索し、該当するもののリストを抽出
55
+ for /f %%B in ('find "_%Y%%M%%D%" ^< %LOGDIR%\%TMPFILE1%') do echo %%B >> %LOGDIR%\%TMPFILE2%
56
+
57
+ PAUSE
58
+
59
+ rem リストを昇順でソートして重複していない行を抽出
60
+ PowerShell -command "Get-Content %LOGDIR%\%TMPFILE2% | Sort-Object | Get-Unique -i -w 7 do echo %%C" >> %LOGDIR%\%TMPFILE3%
61
+
62
+ PAUSE
63
+
64
+ rem リストの行数をカウントし抽出
65
+ for /f %%C in ('find /c /v ""^< %LOGDIR%\%TMPFILE3%') do echo %%C >> %LOGDIR%\%TMPFILE4%
66
+
67
+ PAUSE
68
+
69
+ 何か簡単なことではないかとは思うのですが、知識がないため、解決できないでいます。
70
+ 大変お手数ですが、解決法などをご教授いただけますと幸甚です。
20
71
  よろしくお願いいたします。
21
72
 
22
- rem @echo off
23
- setlocal
24
-
25
- set Y=%date:~0,4%
26
- set M=%date:~5,2%
27
- set D=%date:~8,2%
28
-
29
-
30
-
31
- set LOGDIR="C:\temp\ESS-REC\Server\Log"
32
- set RECFILE="E:\ESS REC\Server\Data\%Y%%M%"
73
+ 本文では、%LOGDIR%%TMPFILE1%という記載になっているかと思いますが、こちらはスクリプトでは、間に/は入っている記載になっています。
33
- set TMPFILE1="tmpfile1.txt"
34
- set TMPFILE2="tmpfile2.txt"
35
- set TMPFILE3="tmpfile3.txt"
36
- set TMPFILE4="tmpfile4.txt"
37
-
38
- PAUSE
39
-
40
- rem ファイルらz081490を除くファイル名のリストを抽出
74
+ teratailの仕様がなにで円マークが表示されませんでした。
41
- for /f "delims=" %%A in ('dir /B %RECFILE%\*.rec ^| find /v "z081490"') do echo %%A >> %LOGDIR%\%TMPFILE1%
42
-
43
- PAUSE
44
-
45
- rem 当日の日付でファイル名のリストを検索し、該当するもののリストを抽出
46
- for /f %%B in ('find "_%Y%%M%%D%" ^< %LOGDIR%\%TMPFILE1%') do echo %%B >> %LOGDIR%\%TMPFILE2%
47
-
48
- PAUSE
49
-
50
- rem リストを昇順でソートして重複していない行を抽出
51
- PowerShell -command "Get-Content %LOGDIR%\%TMPFILE2% | Sort-Object | Get-Unique -i -w 7 do echo %%C" >> %LOGDIR%\%TMPFILE3%
52
-
53
- PAUSE
54
-
55
- rem リストの行数をカウントし抽出
56
- for /f %%C in ('find /c /v ""^< %LOGDIR%\%TMPFILE3%') do echo %%C >> %LOGDIR%\%TMPFILE4%
57
-
58
- PAUSE

1

タグからpowershellを除きました

2022/03/15 03:20

投稿

spisytaka
spisytaka

スコア0

test CHANGED
File without changes
test CHANGED
File without changes