3

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

我开始使用 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]

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

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

4

1 回答 1

3

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

$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)

}
于 2013-04-09T18:45:57.723 回答