ååãŸã§ã®ããã°ã©ã ã§ãæ€çŽ¢ãããã¡ã€ã«ã®æéãèšå®ãããã¿ãŒã³ãããããäœæããŠã¿ãŸãããã ãããã®ãã¿ãŒã³ã¯ææ¡ã§ãããšæããŸããããã«ãããããªæéããªãã·ã§ã³ãšããŠèšå®ãããã®ã§ããã°ãååãŸã§ã®ããã°ã©ã ãåèã«ããªãšãŒã·ã§ã³ãå¢ããããšã¯ããé£ããããšã§ã¯ãããŸããã
ä»åã¯å¥ã®ã¿ã€ãã®ãªãã·ã§ã³ãå ããããšæããŸãã
ååãŸã§äœæããGet-FileInformation.ps1ã§ã¯ããªãã·ã§ã³ãã©ã¡ãŒã¿TodayãThisWeekãªã©ã®æéãæå®ã§ããããã«ããŸããããã ãåžžã«ã«ã¬ã³ããã£ã¬ã¯ããªä»¥äžã®ãã¹ãŠã®ãã£ã¬ã¯ããª(ãã©ã«ã)ãæ€çŽ¢ããŸãã®ã§ãç®çã«ãã£ãŠã¯ããã£ãŠç¡é§ã«æ å ±ã衚瀺ããããšã«ãªããŸãããããéªéã«ãªãããšããããŸãã
ããã§ãä»åã¯ãã¹ã€ãããã©ã¡ãŒã¿ãæå®ããŠãã«ã¬ã³ããã£ã¬ã¯ããªã ãæ€çŽ¢ããµããã£ã¬ã¯ããªãæ€çŽ¢ããšåãæ¿ããããããã«ããŠã¿ãŸãã
仿§ãšããŠã¯ãGet-FileInformation.ps1å®è¡æã«-rãªãã·ã§ã³(recurseã®r)ãæå®ããããµããã£ã¬ã¯ããªãæ€çŽ¢ã-rã®æå®ããªããã°ã«ã¬ã³ããã£ã¬ã¯ããªã ãæ€çŽ¢ãããšããŸãã
-rãšå ¥åããŠãã-recurseãšå ¥åããŠãããããã«ãæåã®2æå-rã ããå€å®ãã3æåç®ä»¥éã¯ãã£ãŠããªããŠããããšããŸãã(æåã-rã§ããã°-raaã§ã-r1234ã§ãOK)
ãã¿ãŒã³ãããã³ã°ã®åºæ¬
ãã¿ãŒã³ãããã³ã°ãšã¯ãæååã®ãã¿ãŒã³ãæ¯èŒããæ¡ä»¶ã«åã£ãŠããããæ¡ä»¶ã«åããªãããå€å®ããããšã§ããããšãã°ãGet-FileInfomation.ps1ã®switchæ§æã§"Today"ã"Yesterday"ãªã©ã®æååããã§ãã¯ããŠããã®ãããã¿ãŒã³ãããã³ã°ã®äžçš®ãšèšããŸãããã ããä»ãŸã§äœæããswitchæ§æã§ã¯ãåçŽã«åãæååãã©ãããå€å®ããã ãã§ãã
PowerShellã§ã¯ãããæ¬æ Œçãªãã¿ãŒã³ãããã³ã°ãè¡ãææ®µãšããŠã-likeãš-matchãšããæŒç®åããããŸãã
-likeã®åºæ¬çãªäœ¿ãæ¹ã¯ã以äžã®åŒã«ãªããŸãã
æ¯èŒå¯Ÿè±¡ãšãªãæåå -like ãã¿ãŒã³æå®æåå
ãæ¯èŒå¯Ÿè±¡æååããããã¿ãŒã³æå®æååããæå³ãããã¿ãŒã³ã«é©åããã°ããã®åŒã®å€ãç(true)ã«ãªããŸããé©åããªããã°åœ(false)ã«ãªããŸãã-matchæŒç®åã®å Žåãåºæ¬çã«ã¯åãäœ¿ãæ¹ã§ãããã ãããã¿ãŒã³æå®æååãèšè¿°ãããšãã-likeã®å Žåã«ã¯ãã¯ã€ã«ãã«ãŒããšåŒã¶DOSãWindowsæµã®æžåŒã䜿ããŸããã-matchã®å Žåã«ã¯æ£èŠè¡šçŸãšåŒã¶UNIXæµã®æžåŒã䜿ããŸãã-likeã®æ¹ãã·ã³ãã«ã§ç°¡åã«äœ¿ãããªããããã«ãªããŸããã-matchã®æ¹ãããè€éã§çްããªãã¿ãŒã³æå®ãå¯èœã§ãã
ä»åã¯ãç°¡åã«äœ¿çšã§ããã¯ã€ã«ãã«ãŒãã®-likeã解説ããŸãã
ã¯ã€ã«ãã«ãŒãã§äœ¿çšããç¹æ®æåã¯2ã€ãã¢ã¹ã¿ãªã¹ã¯ã*ããšã¯ãšã¹ãã§ã³ããŒã¯ã?ãã§ããå¿ ãåè§æåã§æå®ããŸããã¢ã¹ã¿ãªã¹ã¯ã¯ã0æå以äžã®ä»»æã®æååããæå³ããŸããã?ãã¯ãä»»æã®1æåããæå³ããŸãã
ããšãã°ããa?bãã¯ããaãšbã®éã«ä»»æã®1æåããããããšãæå³ããŸããabbãa5bã¯é©åããŸãããabã¯aãšbã®éã«1æåãããŸããã®ã§é©åããŸããããŸãa12bã¯aãšbã®éã«2æåãããŸãã®ã§ãé©åããŸããã
ãa*bãã¯ããaãšbã®éã«0æå以äžã®ä»»æã®æååããããããšãæå³ããŸããæ³šæãå¿ èŠãªã®ã¯ã1æå以äžã§ã¯ãªãã0æå以äžã§ããããšã§ããããšãã°ããabãã¯aãšbã®éã0æåã§ãã®ã§é©åããŸããa1bãa123bãa123456bãé©åããŸããããããa123bcã¯ãæååã®æåŸãcã§ãã®ã§é©åããŸããããa*b*ã(aã§å§ãŸã£ãŠä»»æã®æååããã£ãŠbããã£ãŠä»»æã®æåå)ãšããã°é©åããŸãã
ã¯ã€ã«ãã«ãŒãã®äœ¿ãæ¹ããããã°ã-rã§å§ãŸãã¹ã€ãããã©ã¡ãŒã¿ãã©ãããå€å®ãããã¿ãŒã³ãã-r*ãã§ããããšãããããŸãã
å®éã«-likeã§è©ŠããŠã¿ãŸãããã以äžã®ããã°ã©ã ãå ¥åããŠå®è¡ããŠã¿ãŠãã ããã
if ("-recurse" -like "-r*")
{
Write-Output "é©åããïŒ"
} else {
Write-Output "é©åããïŒ"
}
![]() |
|
-likeæŒç®åã䜿ã£ãŠãã¯ã€ã«ãã«ãŒãã®ãã¿ãŒã³ãããã³ã°ã詊ããŠã¿ãŸãã |
ãé©åããïŒããšè¡šç€ºãããã¯ãã§ãã"-recurse"ã®éšåã"-r*"ã®æååéšåãããããã倿ŽããŠå®è¡ãã詊ããŠäžããã
åŠå®ãããããæŒç®å
-likeã-matchã«ãããããã³ã°ã®æä»æŒç®åãšããŠ-nolikeã-nomatchããããŸããããšãã°ãã-nolike "ab*"ãã¯ããab*ã«è©²åœããªãæååããæå³ããŸãã
switchæ§æã®æ¡åŒµ
switchæ§æã®åºæ¬çãªäœ¿ãæ¹ã埩ç¿ããŸããããæ§æã¯ä»¥äžã®éãã§ãã
switch (æ¯èŒãããå€)
{
å€1 {
æ¯èŒãããå€ãå€1ã ã£ããšãã®åŠç
}
å€2 {
æ¯èŒãããå€ãå€2ã ã£ããšãã®åŠç
}
:
default {
æ¯èŒãããå€ãã©ã®å€ã«ãäžèŽããªãã£ããšãã®åŠç
}
}
éåžžãæ¯èŒãããå€ã¯ãå®å šã«äžèŽãããã©ããã§å€å®ããŸãããå®ã¯ãPowerShellã®switchã«ã¯ãã¿ãŒã³ãããã³ã°æ©èœããããŸããããã䜿ãã°ã-likeæŒç®åã®ãããªãããã³ã°åŠçãã§ããŸãã
ã¯ã€ã«ãã«ãŒãã§å€å®ããããã«ã¯ãswitchæ§æã®åé ãã以äžã®ããã«èšè¿°ããŸãã
switch -wildcard (æ¯èŒãããå€)
æ£èŠè¡šçŸã§å€å®ããããã«ã¯-wildcardã®ä»£ããã«-regexãæå®ããŸãã
ãªãã-wildcardã-regexããæ¯èŒãããå€ãæååã§ãªããã°æå³ã®ãªãæ©èœã§ããæ¯èŒãããå€ãæååå以å€ã®æã¯-wildcardã-regexãæå®ããŠãæå³ããªããŸãããPowerShellã¯ç¡èŠããŸãã
远å ããããã°ã©ã ã®æŠèŠ
ä»åã®-rã¹ã€ãããã©ã¡ãŒã¿ãšãã®æ©èœã远å ããããã®ãGet-FileInformation.ps1ã®å€æŽã®ãã€ã³ãã¯æ¬¡ã®éãã§ãã
â» å šããã°ã©ã ãªã¹ãã¯ããã®èšäºã®æ«å°Ÿã«æ²èŒããŠããŸãã
(1)ã³ãã³ãã©ã€ã³ãªãã·ã§ã³ãæ€æ»ããforã«ãŒãã«å ¥ãåã«ããµããã£ã¬ã¯ããªãæ€çŽ¢ãããã©ãããä¿åãããã©ã°ãrecurseflagãçšæããŸãããã®åæå€ãfalseã«èšå®ããŸã(ããã°ã©ã ãªã¹ãã®89è¡ç®)ã
recurseflagã®å€ãfalse(åœ)ã®ãŸãŸã§ããã°ããµããã£ã¬ã¯ããªãæ€çŽ¢ããŸããã
recurseflagã®å€ãtrue(ç)ã«ãªãã°ããµããã£ã¬ã¯ããªãæ€çŽ¢ããŸãã
ãã®recurseflagã®ããã«ãåŠçã®åå²ç¹ã®ä¿¡å·ãšãªã倿°ããããã°ã©ã ã§ã¯ãã©ã°(æ)ãšåŒã³ãŸãã
87:# $period éå§æéãšçµäºæéãä¿æããé
å倿°
88:$helpmessage = $true # ãã«ãã衚瀺ãããã©ããã®ãã©ã°(åæå€true)
89:$recurseflag = $falseãã# ãµããã£ã¬ã¯ããªãæ€çŽ¢ãããã©ããã®ãã©ã°(åæå€false)
(2)ã¯ã€ã«ãã«ãŒãã䜿ã£ããããã³ã°å€å®ãããŸãã®ã§ãswitchã«ã¯-wildcardæå®ãä»ããŸãã(94è¡ç®)
92:for ($i = 0; $i -lt $args.length; $i++)
93:{
94: switch -wildcard ($args[$i])
95: {
(3)ã³ãã³ãã©ã€ã³ãªãã·ã§ã³ãå€å®ããforã«ãŒãã®switchæ§æã®äžã§ãã³ãã³ãã©ã€ã³ãã©ã¡ãŒã¿ã«"-r"ã§å§ãŸãæååãããã°recurseflagã®å€ãtrueã«ã»ããããŸããããã§ãã¿ãŒã³ãããã³ã°ã®ããã®ã¯ã€ã«ãã«ãŒãèšè¿°ã䜿çšããŸãã(129è¡ç®ïœ131è¡ç®)
129: "-r*" {
130: $recurseflag = $true
131: }
(3)Get-ChildItemã³ãã³ãã¬ãããå®è¡ããæ®µéã§ãrecurseflagãtrueã§ããã°ã-Recurseãªãã·ã§ã³ä»ãã§ãrecurseflagãfalseã§ããã°-Recurseãªãã·ã§ã³ãªãã§ãGet-ChildItemãå®è¡ããŸãã(159è¡ç®ïœ167è¡ç®)
159: if ($recurseflag -eq $true) { # -rä»ã
160: Get-ChildItem -Recurse | `
161: Where-Object `
162: { ($_.LastWriteTime -ge $period[0]) -and ($_.LastWriteTime - lt $period[1]) }
163: } else {ãããããããããã# -r ãªã
164: Get-ChildItem | `
165: Where-Object `
166: { ($_.LastWriteTime -ge $period[0]) -and ($_.LastWriteTime - lt $period[1]) }
167: }
(4)ãã«ã衚瀺ã«-rã¹ã€ãããã©ã¡ãŒã¿ã®èª¬æã远å ããŸãã(156è¡ç®ïœ157è¡ç®)
156: Write-Output ""
157: Write-Output "-r - ãµããã£ã¬ã¯ããªãæ€çŽ¢ã"
![]() |
|
Get-FileInformation Yesterdayãšå®è¡ããäŸãæšæ¥äœæããã«ã¬ã³ããã£ã¬ã¯ããªã®ãã¡ã€ã«ã ããäžèŠ§è¡šç€ºããŸãã |
![]() |
|
Get-FileInformation Yesterday -r ãšå®è¡ããäŸããµããã£ã¬ã¯ããªãå«ããŠæ€çŽ¢ããŸãã |
ãã¡ã€ã«æ å ±äžèЧããã°ã©ã ã®ãŸãšã
ããŠããŸã ãŸã æ¹è¯ã®äœå°ã¯ãããŸãããã²ãšãŸããGet-FileInformation.ps1ã®ããã°ã©ãã³ã°ã¯ä»åã§åºåããä»ããããšã«ããŸãã
Get-FileInformation.ps1ã§ã¯ãå®è¡æã«æå®ãããã³ãã³ãã©ã€ã³ã®åŠçãæååé åã®æ±ããæ¥ä»æå»åãªããžã§ã¯ãã®èšç®ãforæ§æãswitchæ§æãifæ§æããããŠæååãã¿ãŒã³ãããã³ã°ãªã©ã䜿ããŸããã
次åããã¯ããŸãéã£ãããã°ã©ã ãåãäžããŠãããŸãã
ãã¡ã€ã«æ å ±äžèЧããã°ã©ã ã®å šããã°ã©ã ãªã¹ã
1:#ãã¡ã€ã«æ
å ±äžèЧããã°ã©ã Ver.1.0
2:
3:#ã仿¥ãã®éå§æ¥æãšçµäºæ¥æãç®åº
4:function TodayPeriod
5:{
6: $date1 = Get-Date -Hour 0 -Minute 0 -Second 0
7: $date1
8: $date1.AddDays(1)
9:}
10:
11:#ãæšæ¥ãã®éå§æ¥æãšçµäºæ¥æãç®åº
12:function YesterdayPeriod
13:{
14: $date1 = Get-Date -Hour 0 -Minute 0 -Second 0
15: $date1.AddDays(-1)
16: $date1
17:}
18:
19:#ãçŽè¿1é±éãã®éå§æ¥æãšçµäºæ¥æãç®åº
20:function LastOneWeekPeriod
21:{
22: $date1 = Get-Date -Hour 0 -Minute 0 -Second 0
23: $date1.AddDays(-6)
24: $date1.AddDays(1)
25:}
26:
27:#ãä»é±ãã®éå§æ¥æãšçµäºæ¥æãç®åº
28:function ThisWeekPeriod
29:{
30: $date1 = Get-Date -Hour 0 -Minute 0 -Second 0
31:
32: switch ($date1.DayOfWeek)
33: {
34: "Monday" { $date2 = $date1 }
35: "Tuesday" { $date2 = $date1.AddDays(-1) }
36: "Wednesday" { $date2 = $date1.AddDays(-2) }
37: "Thursday" { $date2 = $date1.AddDays(-3) }
38: "Friday" { $date2 = $date1.AddDays(-4) }
39: "Saturday" { $date2 = $date1.AddDays(-5) }
40: "Sunday" { $date2 = $date1.AddDays(-6) }
41: default {} #åŠçäžèŠ
42: }
43: $date2
44: $date1.AddDays(1)
45:}
46:
47:#ã仿ãã®éå§æ¥æãšçµäºæ¥æãç®åº
48:function ThisMonthPeriod
49:{
50: Get-Date -Day 1 -Hour 0 -Minute 0 -Second 0
51: $date1 = Get-Date -Hour 0 -Minute 0 -Second 0
52: $date1.AddDays(1)
53:}
54:
55:#ãä»å¹Žãã®éå§æ¥æãšçµäºæ¥æãç®åº
56:function ThisYearPeriod
57:{
58: Get-Date -Month 1 -Day 1 -Hour 0 -Minute 0 -Second 0
59: $date1 = Get-Date -Hour 0 -Minute 0 -Second 0
60: $date1.AddDays(1)
61:}
62:
63:#ããã®1ãæãã®éå§æ¥æãšçµäºæ¥æãç®åº
64:function LastOneMonthPeriod
65:{
66: $date1 = Get-Date -Hour 0 -Minute 0 -Second 0 #仿¥ã®æ¥ä»
67: if ($date1.Month -ne 1) # 仿ã1æã§ãªããšã
68: {
69: Get-Date $date1 -Month ($date1.Month - 1) #æã1ã€æžãã
70: }
71: else
72: {
73: Get-Date $date -Year ($date1.Year -1) -Month 12 #å幎ã®12æ
74: }
75: $date1.AddDays(1)
76:}
77:
78:#ããã®1幎ãã®éå§æ¥æãšçµäºæ¥æãç®åº
79:function LastOneYearPeriod
80:{
81: $date1 = Get-Date -Hour 0 -Minute 0 -Second 0 #仿¥ã®æ¥ä»
82: Get-Date $date1 -Year ($date1.Year -1)
83: $date1.AddDays(1)
84:}
85:
86:
87:# $period éå§æéãšçµäºæéãä¿æããé
å倿°
88:$helpmessage = $true # ãã«ãã衚瀺ãããã©ããã®ãã©ã°
89:$recurseflag = $falseãã# ãµããã£ã¬ã¯ããªãæ€çŽ¢ãããã©ããã®ãã©ã°
90:
91:#ãªãã·ã§ã³ã確èªd
92:for ($i = 0; $i -lt $args.length; $i++)
93:{
94: switch -wildcard ($args[$i])
95: {
96: "Today" { # 仿¥ã®ãã¡ã€ã«äžèЧã衚瀺
97: $helpmessage = $false
98: $period = TodayPeriod
99: }
100: "Yesterday" { # æšæ¥ã®ãã¡ã€ã«ãäžèŠ§è¡šç€º
101: $helpmessage = $false
102: $period = YesterdayPeriod
103: }
104: "LastOneWeek" { # 1é±éã®ãã¡ã€ã«ãäžèŠ§è¡šç€º
105: $helpmessage = $false
106: $period = LastOneWeekPeriod
107: }
108: "ThisWeek" { # ä»é±ã®ãã¡ã€ã«ãäžèŠ§è¡šç€º
109: $helpmessage = $false
110: $period = ThisWeekPeriod
111: }
112: "LastOneMonth" { # 1ãæã®ãã¡ã€ã«ãäžèŠ§è¡šç€º
113: $helpmessage = $false
114: $period = LastOneMonthPeriod
115: }
116: "ThisMonth" { # 仿ã®ãã¡ã€ã«ãäžèŠ§è¡šç€º
117: $helpmessage = $false
118: $period = ThisMonthPeriod
119: }
120: "LastOneYear" { # 1幎ã®ãã¡ã€ã«ãäžèŠ§è¡šç€º
121: $helpmessage = $false
122: $period = LastOneYearPeriod
123: }
124: "ThisYear" { # ä»å¹Žã®ãã¡ã€ã«ãäžèŠ§è¡šç€º
125: $helpmessage = $false
126: $period = ThisYearPeriod
127: }
128:
129: "-r*" {
130: $recurseflag = $true
131: }
132:
133: default {
134: # äœãããŸãã
135: }
136: }
137:}
138:
139:#ãã«ãã衚瀺ãããããã¡ã€ã«äžèЧãå®è¡
140:if ($helpmessage)
141:{
142: Write-Output "Get-FileInformation Ver.0.2 - ãã¡ã€ã«äžèЧã³ãã³ã"
143: Write-Output ""
144: Write-Output "äœ¿çšæ¹æ³"
145: Write-Output "Get-FileInformation <ãªãã·ã§ã³>"
146: Write-Output ""
147: Write-Output "ãªãã·ã§ã³äžèЧ"
148: Write-Output "Today - 仿¥ã®ãã¡ã€ã«ã衚瀺ã"
149: Write-Output "Yesterday - æšæ¥ã®ãã¡ã€ã«ã衚瀺ã"
150: Write-Output "LastOneWeek - 1é±éã®ãã¡ã€ã«ã衚瀺ã"
151: Write-Output "ThisWeek - ä»é±ã®ãã¡ã€ã«(æææ¥ä»¥é)ã衚瀺ã"
152: Write-Output "LastOneMonth- 1ãæã®ãã¡ã€ã«ã衚瀺ã"
153: Write-Output "ThisMonth - 仿ã®ãã¡ã€ã«ã衚瀺ã"
154: Write-Output "LastOneYear - 1幎ã®ãã¡ã€ã«ã衚瀺ã"
155: Write-Output "ThisYear - ä»å¹Žã®ãã¡ã€ã«ã衚瀺ã"
156: Write-Output ""
157: Write-Output "-r - ãµããã£ã¬ã¯ããªãæ€çŽ¢ã"
158:} else {
159: if ($recurseflag -eq $true) { # -rä»ã
160: Get-ChildItem -Recurse | `
161: Where-Object `
162: { ($_.LastWriteTime -ge $period[0]) -and ($_.LastWriteTime -lt $period[1]) }
163: } else {ãããããããããã # -r ãªã
164: Get-ChildItem | `
165: Where-Object `
166: { ($_.LastWriteTime -ge $period[0]) -and ($_.LastWriteTime - lt $period[1]) }
167: }
168:}


