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

質問編集履歴

3

文法の修正

2021/08/30 08:20

投稿

-Yam-
-Yam-

スコア12

title CHANGED
File without changes
body CHANGED
@@ -53,13 +53,13 @@
53
53
  『試したこと1』とは別に作成したところ以下の条件でファイル名をFileName列に表示させることは出来ましたが、ファイル名**File2.txt**しか表示できません。。
54
54
  ※一部ソースを省略してます。
55
55
  ```powershell
56
- if ($Directory.list.Folder1.Split("\")[-1] -eq $Directory.list.Folder2.Split("\")[-1]) {
56
+ if ($dir.list.Folder1.Split("\")[-1] -eq $dir.list.Folder2.Split("\")[-1]) {
57
- $t = (Get-Content $Directory.list.Folder1)
57
+ $t = (Get-Content $dir.list.Folder1)
58
- $s = (Get-Content $Directory.list.Folder2)
58
+ $s = (Get-Content $dir.list.Folder2)
59
59
  $diffResult = Compare-Object $t $s -IncludeEqual
60
60
  $diffResult | ft -a -wr @{label=”Line”;expression={$_.inputobject.readcount}},*
61
61
  for ($i = 0; $i -lt $diffResult.Count; $i++) {
62
- $filename = $Directory.list.Folder1.Split("\")[-1]
62
+ $filename = $dir.list.Folder1.Split("\")[-1]
63
63
  }
64
64
  }
65
65
 

2

文章の追加

2021/08/30 08:20

投稿

-Yam-
-Yam-

スコア12

title CHANGED
File without changes
body CHANGED
@@ -33,7 +33,7 @@
33
33
  File2.txt test2 =>
34
34
  File2-2.txt test22 <=
35
35
  ```
36
- ### 試したこと
36
+ ### 試したこと
37
37
  『Replaceメソッド』で以下の条件FileName列に表示させることは出来ましたが、ファイル名を一致させる条件は一致出来ておりません。
38
38
  ※一部ソースを省略してます。
39
39
  ```powershell
@@ -49,5 +49,26 @@
49
49
  }
50
50
  }
51
51
  ```
52
+ ### 試したこと2
53
+ 『試したこと1』とは別に作成したところ以下の条件でファイル名をFileName列に表示させることは出来ましたが、ファイル名**File2.txt**しか表示できません。。
54
+ ※一部ソースを省略してます。
55
+ ```powershell
56
+ if ($Directory.list.Folder1.Split("\")[-1] -eq $Directory.list.Folder2.Split("\")[-1]) {
57
+ $t = (Get-Content $Directory.list.Folder1)
58
+ $s = (Get-Content $Directory.list.Folder2)
59
+ $diffResult = Compare-Object $t $s -IncludeEqual
60
+ $diffResult | ft -a -wr @{label=”Line”;expression={$_.inputobject.readcount}},*
61
+ for ($i = 0; $i -lt $diffResult.Count; $i++) {
62
+ $filename = $Directory.list.Folder1.Split("\")[-1]
63
+ }
64
+ }
65
+
66
+ foreach ($d2 in $diffResult) {
67
+ foreach ($f in $filename) {
68
+ $diff.Add($f,$d2.inputobject.readcount,$d2.InputObject,$d2.SideIndicator)
69
+ }}
70
+ ```
52
71
  ### 追記
53
- ・質問内容の変更・追記 2021.08.25
72
+ ・質問内容の変更・追記 2021.08.25
73
+
74
+ ・試したこと2の追加 2021.08.30

1

文章の変更、追加

2021/08/30 08:06

投稿

-Yam-
-Yam-

スコア12

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