質問編集履歴

3

文法の修正

2021/08/30 08:20

投稿

-Yam-
-Yam-

スコア12

test CHANGED
File without changes
test CHANGED
@@ -108,11 +108,11 @@
108
108
 
109
109
  ```powershell
110
110
 
111
- if ($Directory.list.Folder1.Split("\")[-1] -eq $Directory.list.Folder2.Split("\")[-1]) {
111
+ if ($dir.list.Folder1.Split("\")[-1] -eq $dir.list.Folder2.Split("\")[-1]) {
112
112
 
113
- $t = (Get-Content $Directory.list.Folder1)
113
+ $t = (Get-Content $dir.list.Folder1)
114
114
 
115
- $s = (Get-Content $Directory.list.Folder2)
115
+ $s = (Get-Content $dir.list.Folder2)
116
116
 
117
117
  $diffResult = Compare-Object $t $s -IncludeEqual
118
118
 
@@ -120,7 +120,7 @@
120
120
 
121
121
  for ($i = 0; $i -lt $diffResult.Count; $i++) {
122
122
 
123
- $filename = $Directory.list.Folder1.Split("\")[-1]
123
+ $filename = $dir.list.Folder1.Split("\")[-1]
124
124
 
125
125
  }
126
126
 

2

文章の追加

2021/08/30 08:20

投稿

-Yam-
-Yam-

スコア12

test CHANGED
File without changes
test CHANGED
@@ -68,7 +68,7 @@
68
68
 
69
69
  ```
70
70
 
71
- ### 試したこと
71
+ ### 試したこと
72
72
 
73
73
  『Replaceメソッド』で以下の条件FileName列に表示させることは出来ましたが、ファイル名を一致させる条件は一致出来ておりません。
74
74
 
@@ -100,6 +100,48 @@
100
100
 
101
101
  ```
102
102
 
103
+ ### 試したこと2
104
+
105
+ 『試したこと1』とは別に作成したところ以下の条件でファイル名をFileName列に表示させることは出来ましたが、ファイル名**File2.txt**しか表示できません。。
106
+
107
+ ※一部ソースを省略してます。
108
+
109
+ ```powershell
110
+
111
+ if ($Directory.list.Folder1.Split("\")[-1] -eq $Directory.list.Folder2.Split("\")[-1]) {
112
+
113
+ $t = (Get-Content $Directory.list.Folder1)
114
+
115
+ $s = (Get-Content $Directory.list.Folder2)
116
+
117
+ $diffResult = Compare-Object $t $s -IncludeEqual
118
+
119
+ $diffResult | ft -a -wr @{label=”Line”;expression={$_.inputobject.readcount}},*
120
+
121
+ for ($i = 0; $i -lt $diffResult.Count; $i++) {
122
+
123
+ $filename = $Directory.list.Folder1.Split("\")[-1]
124
+
125
+ }
126
+
127
+ }
128
+
129
+
130
+
131
+ foreach ($d2 in $diffResult) {
132
+
133
+ foreach ($f in $filename) {
134
+
135
+ $diff.Add($f,$d2.inputobject.readcount,$d2.InputObject,$d2.SideIndicator)
136
+
137
+ }}
138
+
139
+ ```
140
+
103
141
  ### 追記
104
142
 
105
143
  ・質問内容の変更・追記 2021.08.25
144
+
145
+
146
+
147
+ ・試したこと2の追加 2021.08.30

1

文章の変更、追加

2021/08/30 08:06

投稿

-Yam-
-Yam-

スコア12

test CHANGED
File without changes
test CHANGED
@@ -2,110 +2,104 @@
2
2
 
3
3
  差分したファイル名を**FileName列**に表示させたいです。
4
4
 
5
- 差分は表示できてもファイル名(Folser1のファイル名のみ)をどう表示させればよいのか分からず困っております
5
+ それぞれファイル内容とファイルを出すことは出来ますが、差分したファイル名とテキスト内容の表示されまん。どうすれば一致できるでしょうか。
6
6
 
7
- 実行させる順番は
8
-
9
- ①差分対象のFolder1とFolder2をそれぞれ『Get-Content』でファイルの中身を表示後差分する。
10
-
11
- ②差分結果の$Result.SideIndicatorの表示を置換
12
-
13
- ③Addメソッドで作成したResutl配列に差分結果の値を各列に入れる
14
-
15
- ①の処理にファイル名の表示させる処理も追加したいと考えております。
16
-
17
- そもそも差分対象の中身($Dir.list)にファイル名の列を追加した方が良いのでしょうか。
18
-
19
- ご教示お願いいたします。
7
+ ご教示いただけると幸す。
20
8
 
21
9
 
22
10
 
23
- ### 差分対象($Dir.listの中身)
11
+ ### 差分対象($dir.listの中身)
24
12
 
25
13
  ```
26
14
 
27
- Folder1のテキストファイルとFolder2のテキストファイルの中身を一行ずつ比較
15
+ Folder1 Folder2
28
16
 
29
- Dir Folder1 Folder2
17
+ ------- -------
30
18
 
31
- --- ------- -------
19
+ C:\Dir1\Folder1\File1.txt  C:\Dir1\Folder2\File1-2.txt
32
20
 
33
- Dir1 C:\Dir1\Folder1\File1.txt  C:\Dir1\Folder2\File1.txt
21
+ C:\Dir1\Folder1\File2.txt  C:\Dir1\Folder2\File2-2.txt
34
-
35
- Dir2 C:\Dir1\Folder1\File2.txt  C:\Dir1\Folder2\File2.txt
36
22
 
37
23
  ```
38
24
 
39
- ### 該当ソースコード
25
+ ### $diff.list中身
40
26
 
27
+ ```
28
+
29
+ FileName1  Data Result
30
+
31
+ ---------  ---- ------
32
+
33
+        test1 ==
34
+
35
+        test1 =>
36
+
37
+        test <=
38
+
39
+        test2 =>
40
+
41
+        test22 <=
42
+
43
+ ```
44
+
45
+ ### 表示させたい結果
46
+
47
+ ```
48
+
49
+ (例)Folder1内の各ファイルのテキスト内容と一致している場合は、Folder1内のファイル名表示
50
+
51
+   一致していない値は、Folder2内の各ファイルのテキスト内容と一致している場合、Folder2内のファイル名表示
52
+
53
+
54
+
55
+ FileName   Data Result
56
+
57
+ ----------  ---- ------
58
+
59
+ File1.txt test1 ==
60
+
61
+ File1.txt test1 =>
62
+
63
+ File1-2.txt test <=
64
+
65
+ File2.txt test2 =>
66
+
67
+ File2-2.txt test22 <=
68
+
69
+ ```
70
+
71
+ ### 試したこと
72
+
73
+ 『Replaceメソッド』で以下の条件FileName列に表示させることは出来ましたが、ファイル名を一致させる条件は一致出来ておりません。
74
+
41
- 一部ソースを省略してます。
75
+ 一部ソースを省略してます。
42
76
 
43
77
  ```powershell
44
78
 
45
- <#$target,$sourceを比較
79
+ foreach ($d in $diff.list) {
46
80
 
47
- Addメソッドする際にファイル名も表示させる#>
81
+ foreach ($d2 in $dir.list) {
48
82
 
49
- foreach ($di in $Dir) {
83
+ if (($d.Result -eq "==")-and ((Get-Content $d2.Folder1) -eq $d.Data)) {
50
84
 
51
- $F1 = $di.list.Folder1
85
+ $diff.Replace("==",'1')
52
86
 
53
- $F2 = $di.list.Folder2
87
+ }elseif (($d.Result -eq "<=")-and ((Get-Content $d2.Folder1) -eq $d.Data)) {
54
88
 
55
- $Fol1 = (Get-Content $F1)
89
+ $diff.Replace("<=",'2')
56
90
 
57
- $Fol2 = (Get-Content $F2)
91
+ }elseif (($d.Result -eq "=>")-and ((Get-Content $d2.Folder2) -eq $d.Data)) {
58
92
 
59
- $diffResult = Compare-Object $Fol1 $Fol2 -IncludeEqual |
93
+ $diff.Replace("=>",'3')
60
94
 
61
- Select-Object -Property @{Name = 'FileName'; Expression = {$_}} ,@{Name = 'lineNo'; Expression = {$_.InputObject.ReadCount}} ,*
95
+ }
62
96
 
63
-
64
-
65
- #$Fol1,$Fol2を比較結果後、Result配列の各列に代入
66
-
67
- foreach ($d in $diffResult){
68
-
69
- #SideIndicator列が『==』の場合『OK』に置換し、『<=』又は『=>』の場合『NG』に置換
70
-
71
- if ($d.SideIndicator -eq "==") {
72
-
73
- $d.SideIndicator = $d.SideIndicator.Replace("==","OK")
74
-
75
- }elseif ($d.SideIndicator -eq "<=") {
97
+ }
76
-
77
- $d.SideIndicator = $d.SideIndicator.Replace("<=","NG")
78
-
79
- }elseif ($d.SideIndicator -eq "=>") {
80
-
81
- $d.SideIndicator = $d.SideIndicator.Replace("=>","NG")
82
98
 
83
99
  }
84
-
85
- $Result.Add("",$d.lineNo,$d.InputObject,$d.SideIndicator)
86
-
87
- }
88
-
89
- }
90
-
91
- ```
92
-
93
- ### 表示させたい結果($Result.listの中身)
94
-
95
- ```
96
-
97
- Folder1File Date Result
98
-
99
- ---------- ---- ------
100
-
101
- File1.txt   test1 OK
102
-
103
- File1.txt   test NG
104
-
105
- File2.txt    test2 OK
106
-
107
-
108
100
 
109
101
  ```
110
102
 
111
103
  ### 追記
104
+
105
+ ・質問内容の変更・追記 2021.08.25