오해로 인해 스크립트를 변경해야합니다. 다음 구조로 파일을 생성하는 작업장에는 04_R _____ "109402"0076_9999992_35_401_ "01_20121107"_134029_0667.I00의 워크 스테이션이 있습니다. asd (파일 이름의 따옴표 부분은 구문 분석해야하는 부분입니다.)파일 이름을 구문 분석하고 폴더 구조를 만듭니다.
이미 파일 이름의 첫 번째 부분으로 배열을 만들었으며 powershell 프로그램이 해당 데이터를 구문 분석 할 수 있지만 파일 이름의 두 번째 부분에는 부품 번호, 테스트 벤치 번호 (01, 02, 03 등)로 만든 폴더 구조가 있어야하고 날짜가 있어야합니다. 폴더가 없으면 일치하는 항목 만 폴더를 만듭니다
현재 스크립트가 접두어로 필터링 (잘못됨)하고 매일 모든 폴더를 만듭니다 (일치하지 않음). 01, 02, 03 등을 잡아내는 데 많은 문자를 제외시키기 위해 하위 문자열을 사용하고 싶습니다. 휠을 다시 생성하지 않고 몇 가지 변경 사항을 적용하여 현재 코드를 사용할 수 있습니까? 모든 테스트 코드가 포함되어 있으며 도움이 될 것입니다.
- 109402 = 부품 목록
- 01 - 테스트 벤치 기계
- 20121107 - 날짜
코드 : 당신은 손으로 모든 일을하려고하는
$source ="\\127.0.0.1\baunhof\*"
$archive = "\\127.0.0.1\error\\"
#$past=(Get-date).AddDays(-2)
$destination ="\\127.0.0.1\TestFolder1\\"
$destination1="\\127.0.0.1\TestFolder2\\"
$destination2="\\127.0.0.1\TestFolder3\\"
$destination3="\\127.0.0.1\TestFolder4\\"
#array for all destinations
[email protected]("$destination", "$destination1", "$destination2", "$destination3")
#creates folder yyyy/mm/dd
#$today = (Get-date -format yyyy/MM/dd)
#new-item -type directory ($today)
$DTS = (get-date).ToString('yyyy/MM/dd')
#array for file prefix
[email protected]("*108701*")
[email protected]("*108702*")
[email protected]("*109401*", "*1094080*", "*1094090*")
[email protected]("*109402*", "*1094091*", "*1094082*", "*1094092*")
#test bench number array filter
[email protected]("*_01_*")
[email protected]("*_02_*")
[email protected]("*_03_*")
[email protected]("*_04_*")
#Error log function: will write to application on server
function Write-EventLog {
param([string]$msg = "Default Message", [string]$type="Information")
$log = New-Object System.Diagnostics.EventLog
$log.set_log("Application")
$log.set_source("PSscript")
$log.WriteEntry($msg,$type)
}
Write-Eventlog "Acoustic file parse program has started"
# if statement checks if $destination_array[0] is false then new item
$destination_array[0] = "\\127.0.0.1\TestFolder1\today\"
If (!(Test-Path -path $destination_array[0])) {
new-item -type directory "\\127.0.0.1\TestFolder1\$DTS"
new-item -type directory "\\127.0.0.1\TestFolder1\P01\$DTS"
new-item -type directory "\\127.0.0.1\TestFolder1\P02\$DTS"
new-item -type directory "\\127.0.0.1\TestFolder1\P03\$DTS"
new-item -type directory "\\127.0.0.1\TestFolder1\P04\$DTS"
}
$destination_array[1] = "\\127.0.0.1\TestFolder2\today\"
If (!(Test-Path -path $destination_array[1])) {
new-item -type directory "\\127.0.0.1\TestFolder2\$DTS\"
new-item -type directory "\\127.0.0.1\TestFolder2\P01\$DTS"
new-item -type directory "\\127.0.0.1\TestFolder2\P02\$DTS"
new-item -type directory "\\127.0.0.1\TestFolder2\P03\$DTS"
new-item -type directory "\\127.0.0.1\TestFolder2\P04\$DTS"
}
$destination_array[2] = "\\127.0.0.1\TestFolder3\today\"
If (!(Test-Path -path $destination_array[2])) {
new-item -type directory "\\127.0.0.1\TestFolder3\$DTS\"
new-item -type directory "\\127.0.0.1\TestFolder3\P01\$DTS"
new-item -type directory "\\127.0.0.1\TestFolder3\P02\$DTS"
new-item -type directory "\\127.0.0.1\TestFolder3\P03\$DTS"
new-item -type directory "\\127.0.0.1\TestFolder3\P04\$DTS"
}
$destination_array[3] = "\\127.0.0.1\TestFolder4\today\"
If (!(Test-Path -path $destination_array[3])) {
new-item -type directory "\\127.0.0.1\TestFolder4\$DTS\"
new-item -type directory "\\127.0.0.1\TestFolder4\P01\$DTS"
new-item -type directory "\\127.0.0.1\TestFolder4\P02\$DTS"
new-item -type directory "\\127.0.0.1\TestFolder4\P03\$DTS"
new-item -type directory "\\127.0.0.1\TestFolder4\P04\$DTS"
}
$destination="\\127.0.0.1\TestFolder1\$DTS"
$destination1="\\127.0.0.1\TestFolder2\$DTS"
$destination2="\\127.0.0.1\TestFolder3\$DTS"
$destination3="\\127.0.0.1\TestFolder4\$DTS"
[email protected] ("$destination", "$destination1", "$destination2", "$destination3")
# filter works below - need to use array
#$files = get-childitem $source -filter "108701*" -recurse
#foreach ($file in $files)
#{move-item $file.fullname $destination_array[0] -force}
$File_Array_8HP70_start = $File_Array_8HP70 | % {$_+"*"}
$files = get-childitem $source -include $File_Array_8HP70_start -recurse
foreach ($file in $files) {
move-item $file.fullname $destination_array[0] -force
}
#filter test bench
$files01 = gci $destination_array[0] -filter "01_*" -recurse
$files02 = gci $destination_array[0] -filter "02_*" -recurse
$files03 = gci $destination_array[0] -filter "03_*" -recurse
$files04 = gci $destination_array[0] -filter "04_*" -recurse
$destination_array[0]="\\127.0.0.1\TestFolder1\P01\$DTS"
foreach ($file in $files01) {
move-item $file.fullname $destination_array[0] -force
}
$destination_array[0]="\\127.0.0.1\TestFolder1\P02\$DTS"
foreach ($file in $files02) {
move-item $file.fullname $destination_array[0] -force
}
$destination_array[0]="\\127.0.0.1\TestFolder1\P03\$DTS"
foreach ($file in $files03) {
move-item $file.fullname $destination_array[0] -force
}
$destination_array[0]="\\127.0.0.1\TestFolder1\P04\$DTS"
foreach ($file in $files04) {
move-item $file.fullname $destination_array[0] -force
}
$File_Array_8HP70X_start = $File_Array_8HP70X | % {$_+"*"}
$files = get-childitem $source -include $File_Array_8HP70X_start -recurse
foreach ($file in $files) {
move-item $file.fullname $destination_array[1] -force
}
#$files02 = gci $destination_array[1] -filter "02_*" -recurse
$files01 = gci $destination_array[1] -filter "01_*" -recurse
$files02 = gci $destination_array[1] -filter "02_*" -recurse
$files03 = gci $destination_array[1] -filter "03_*" -recurse
$files04 = gci $destination_array[1] -filter "04_*" -recurse
$destination_array[1]="\\127.0.0.1\TestFolder2\P01\$DTS"
foreach ($file in $files01) {
move-item $file.fullname $destination_array[1] -force
}
$destination_array[1]="\\127.0.0.1\TestFolder2\P02\$DTS"
foreach ($file in $files02) {
move-item $file.fullname $destination_array[1] -force
}
$destination_array[1]="\\127.0.0.1\TestFolder2\P03\$DTS"
foreach ($file in $files03) {
move-item $file.fullname $destination_array[1] -force
}
$destination_array[1]="\\127.0.0.1\TestFolder2\P04\$DTS"
foreach ($file in $files04) {
move-item $file.fullname $destination_array[1] -force
}
$File_Array_9HP48_start = $File_Array_9HP48 | % {$_+"*"}
$files = get-childitem $source -include $File_Array_9HP48_start -recurse
foreach ($file in $files) {
move-item $file.fullname $destination_array[2] -force
}
#$files03 = gci $destination_array[2] -filter "03_*" -recurse
$files01 = gci $destination_array[2] -filter "01_*" -recurse
$files02 = gci $destination_array[2] -filter "02_*" -recurse
$files03 = gci $destination_array[2] -filter "03_*" -recurse
$files04 = gci $destination_array[2] -filter "04_*" -recurse
$destination_array[2]="\\127.0.0.1\TestFolder3\P01\$DTS"
foreach ($file in $files01) {
move-item $file.fullname $destination_array[2] -force
}
$destination_array[2]="\\127.0.0.1\TestFolder3\P02\$DTS"
foreach ($file in $files02) {
move-item $file.fullname $destination_array[2] -force
}
$destination_array[2]="\\127.0.0.1\TestFolder3\P03\$DTS"
foreach ($file in $files03) {
move-item $file.fullname $destination_array[2] -force
}
$destination_array[2]="\\127.0.0.1\TestFolder3\P04\$DTS"
foreach ($file in $files04) {
move-item $file.fullname $destination_array[2] -force
}
$File_Array_9HP48X_start = $File_Array_9HP48X | % {$_+"*"}
$files = get-childitem $source -include $File_Array_9HP48X_start -recurse
foreach ($file in $files) {
move-item $file.fullname $destination_array[3] -force
}
#$files04 = gci $destination_array[3] -filter "04_*" -recurse
$files01 = gci $destination_array[3] -filter "01_*" -recurse
$files02 = gci $destination_array[3] -filter "02_*" -recurse
$files03 = gci $destination_array[3] -filter "03_*" -recurse
$files04 = gci $destination_array[3] -filter "04_*" -recurse
$destination_array[3]="\\127.0.0.1\TestFolder4\P01\$DTS"
foreach ($file in $files01) {
move-item $file.fullname $destination_array[3] -force
}
$destination_array[3]="\\127.0.0.1\TestFolder4\P02\$DTS"
foreach ($file in $files02) {
move-item $file.fullname $destination_array[3] -force
}
$destination_array[3]="\\127.0.0.1\TestFolder4\P03\$DTS"
foreach ($file in $files03) {
move-item $file.fullname $destination_array[3] -force
}
$destination_array[3]="\\127.0.0.1\TestFolder4\P04\$DTS"
foreach ($file in $files04) {
move-item $file.fullname $destination_array[3] -force
}
#move files to c:\Error if older than 2 days
$file_2 = gci $source -recurse|where {$_.LastWriteTime -lt (get-date).AddDays(-2)}
foreach ($file in $file_2) {
move-item $file.fullname $archive -force
}
Write-Eventlog "Acoustic file parse program has completed"
안녕하십니까. 답장을 보내 주셔서 감사합니다. 지금 당장 귀하의 코드를 살펴보고 위의 코드를 작성하는 데 정말로 감사드립니다. – user1801422
Ansgar - regex : $ re = "^ \ d {2} _ [AZ] ___ (\ d {6}) \ d {4} _ \ d {7} _ \ d {2} _d {3} _ (\ d {2}) _ \ d {8} _ \ d {6} _ \ d {4}. [AZ] \ d {2} \. 나에게 익숙하지 않은이 코드를 가진 일반적인 고장 .net 도움을 다시 한번 감사드립니다! – user1801422
@ user1801422 업데이트 된 답변보기 나는 이미 주석 줄에서 코드의 일반적인 분류를 내 렸습니다. –