这是我的第一篇文章,所以要温柔。
我开始使用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]
我需要做的是按日期复制每个文件并一次解压缩一个。然后将内容复制到目标文件夹并删除解压缩文件夹中的内容。唷!
我已经完成了一些基本的脚本编写,但这是一个真正的挑战,因此任何指针或示例都会令人惊叹!
答案 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)
}