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]

私がする必要があるのは、各ファイルを日付ごとにコピーし、一度に 1 つずつ解凍することです。次に、内容を宛先フォルダーにコピーし、解凍フォルダー内の内容を削除します。ふぅ!

私はいくつかの基本的なスクリプトを作成しましたが、これは本当の挑戦なので、ポインタや例は素晴らしいでしょう!

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 に答える