首页 > 解决方案 > 如何将复制文件划分为优先级以复制不同的文件

问题描述

我正在尝试构建一种在 Windows 中创建文件夹结构的方法,该方法自动依赖于作业编号以及他们需要多少零件。我能够使代码运行到我制作主文件夹,子文件夹和文件夹中的子文件夹的地步,其中包含一个部分。然而,我想做的事情是根据优先级将不同的部分转移到每个文件夹中

最多有 7 个优先级,需要除以多少个部分,例如有 4 个具有 4 个优先级的部分..(在此示例代码中,它创建了销售文件夹,然后在其下方放置一个名为传送带的文件夹,然后放置 4传送带文件夹中带有数字的文件夹)像这样的ID,根据优先级将四个不同的部分放在四个不同的文件夹中)

尝试了潜水优先级,但这不起作用,因为我不明白如何存储一个数组来做我要求的事情

 powershell
$salesorder = read-host -prompt 'What is the customer name and salesorder number? (ex.. turnkey - 3335)'
$jobnumber = read-host -prompt 'what is the Plant folder plus job number? (ex... 930-12345)' 
$foldername = $jobnumber + " - " +  $salesorder 
#$conveyornumber = read-host -prompt "what is the number for conveyors? " + " - "
$priority = read-host -prompt "how many priorities are there?"




    ##************************* setting variables for second level basic Folder Structure *********************************

$partpath = '\\wal-file\public\sullivan\sully_temp_part.ipt'
$layout = 'D0100 - Layout'
$footprint = 'D0101 - Footprint'
$equipment = 'D01xx - Equipment'
$Guarding = 'D85xx - Guarding'
$conveyor = 'D60xx - Conveyors'

$platform = 'D90xx - Platforms'

#*************************** creating new variables based on folder name stylings *************************************

$workdir = new-item -path "C:\vault_workspace\Temp_vault\wendt\" -name $foldername -itemtype 'directory' -force
$layoutdir = new-item -path $workdir -name $layout -itemtype 'directory'
$layoutfilename = $layoutdir -join '.ipt'


#*************************** setting work directory input **************************************************************


new-item -path $layoutdir -name "$salesorder.ipt" -itemtype "file"
$footprintdir = new-item -path $workdir -name $footprint -itemtype 'directory'



$conveyordir = new-item -path $workdir -name $conveyor -itemtype 'directory'


#looping statement to create multiple folders 
$conveyorinput = read-host -prompt "how many conveyors need to be made?"

for ($i = 1; $i -le $conveyorinput; $i++){"{0:D2}" -f $number} { [system.io.directory]::CreateDirectory("$conveyordir\D51$I")}
start-sleep -seconds 5 
#creating multiple files 

$conveyorarray = Get-ChildItem $conveyordir | Where-Object {$_.PSChildname} |  Foreach-Object {$_.Name}
foreach ($path in $conveyorarray) {copy-item -path $partpath -destination "$conveyordir\$path\$jobnumber-4-$path-DUmmy-A0.ipt "}

我尝试了一些东西,结果好坏参半,这与我期待的结果很接近。我尝试过对其进行优化,但我想不出一种方法来实现任何接近于我要求某种形式的 If 语句可能会做到的事情,但我会把它放在哪里以及它如何工作?

谢谢你的帮助

标签: arrayspowershelldirectorycreation

解决方案


所以我实际上完全改变了suyntax,但我能够做到以下几点

$salesorder = read-host -prompt 'What is the customer name and salesorder number? (ex.. turnkey - 3335)'
$jobnumber = read-host -prompt 'what is the Plant folder plus job number? (ex... 930-12345)'
$topleveldir = new-item -path "C:\vault_workspace\Temp_vault\wendt\" -name "M$jobnumber - $salesorder" -ItemType 'directory'

$subfolders = "D0100 - Layout", "D0101 - Footprint", "D01xx - Equipment","D85xx - Guarding", "D60xx - Conveyors", "D90xx - Platforms", "D09XX - Chutes"

foreach($subfolder in $subfolders){new-item -path "$topleveldir" -name $subfolder -type directory }
#$partpath = '\\wal-file\public\sullivan\sully_temp_part.ipt'    

#p1
$p1conveyorinput = read-host -prompt "how many p1 conveyors need to be made?"

for ($i = 1; $i -le $p1conveyorinput; $i++) { 
$p1c = "{0:D2}" -f $i
[system.io.directory]::CreateDirectory("$topleveldir\D60xx - Conveyors\D61$p1c-p1")
copy-item -path "\\wal-file\public\sullivan\sully_temp_part.ipt" -destination "$topleveldir\D60xx - Conveyors\D61$p1c-p1\D61$p1c-p1-dummy.ipt" -force
}
start-sleep -seconds 1

我遇到的唯一问题是如何循环回到最后一条语句

#p1
$p1conveyorinput = read-host -prompt "how many p1 conveyors need to be made?"

for ($i = 1; $i -le $p1conveyorinput; $i++) { 
$p1c = "{0:D2}" -f $i
[system.io.directory]::CreateDirectory("$topleveldir\D60xx - Conveyors\D61$p1c-p1")
copy-item -path "\\wal-file\public\sullivan\sully_temp_part.ipt" -destination "$topleveldir\D60xx - Conveyors\D61$p1c-p1\D61$p1c-p1-dummy.ipt" -force
}
start-sleep -seconds 1

对于尽可能多的优先级,无需复制和更改变量(我现在要做,因为它起作用)


推荐阅读