Powershell - 将文件复制到共享

时间:2013-04-09 17:59:12

标签: file powershell copying

这是我的第一篇文章,所以要温柔。

我开始使用Powershell并发现它非常直观,并且想要一些关于如何正确编写特定脚本的建议/示例,而不是仅仅将文件从一个地方复制到另一个地方。

Files structure:

c:\backup\archive\

test_20130320_000711_backup.rar
test1_20130320_000711_backup.rar
test_20130320_001215_backup.rar
test1_20130320_001215_backup.rar
test_20130321_000811_backup.rar
test1_20130321_000811_backup.rar
test_20130321_001015_backup.rar
test1_20130321_001015_backup.rar

Unpacking directory:

c:\unpack_file\[contents of each rar goes here, one at a time]

destination:

E:\backup\archive\[date of file above e.g. 20130320 created]\[unpacked rar file contents here]

我需要做的是按日期复制每个文件并一次解压缩一个。然后将内容复制到目标文件夹并删除解压缩文件夹中的内容。唷!

我已经完成了一些基本的脚本编写,但这是一个真正的挑战,因此任何指针或示例都会令人惊叹!

1 个答案:

答案 0 :(得分:2)

我不确定你为什么需要中间目录。这里有一些代码可以帮助您入门。

$rarExe = "C:\Program Files (x86)\7-Zip\7z.exe"
$srcDir = "C:\backup\archive"
$dstDir = "E:\backup\archive"

$rarFiles = gci $srcDir

foreach ($file in $rarFiles){
    $arcDate = $file.basename.Split("_")[1]
    New-Item "$dstDir\$arcDate" -type directory

    Write-Output "EXECUTING: $($startinfo.FileName) $($startinfo.Arguments)"
    $startinfo = new-object System.Diagnostics.ProcessStartInfo
    $startinfo.FileName = $rarExe
    $startinfo.Arguments = "e $($file.fullname) -o$dstDir\$arcDate"
    $process = [System.Diagnostics.Process]::Start($startinfo)

}