2017-03-31 17 views
1

ドライブ上の特定の年月フォルダにファイルを移動するには、次のコードを記述します。しかし、私はまた、操作の最後に書いたフォルダを圧縮したいと思います。それ、どうやったら出来るの?Powershellスクリプトを使用してフォルダを圧縮する

# Get the files which should be moved, without folders 
$files = Get-ChildItem 'D:\NTPolling\InBound\Archive' -Recurse | where {!$_.PsIsContainer} 

# List Files which will be moved 
# $files 

# Target Filder where files should be moved to. The script will automatically create a folder for the year and month. 
$targetPath = 'D:\SalesXMLBackup' 

foreach ($file in $files) 
{ 
# Get year and Month of the file 
# I used LastWriteTime since this are synced files and the creation day will be the date when it was synced 
$year = $file.LastWriteTime.Year.ToString() 
$month = $file.LastWriteTime.Month.ToString() 

# Out FileName, year and month 
$file.Name 
$year 
$month 

# Set Directory Path 
$Directory = $targetPath + "\" + $year + "\" + $month 
# Create directory if it doesn't exsist 
if (!(Test-Path $Directory)) 
{ 
New-Item $directory -type directory 
} 

# Move File to new location 
$file | Move-Item -Destination $Directory 
} 

これらのファイルをフォルダに移動し、それらを圧縮して後で使用するためにアーカイブすることを意図しています。だから私はこれを月1回前の月に実行するようにスケジュールします

答えて

1

あなたは、あなたがCompress-Archive機能を使用することができますV5 PowerShellを使用している場合:これはD:\SalesXMLBackupD:\SalesXMLBackup.zip

+0

ジェームズありがとう。この作品があれば教えてくれます! –

0

これは、ディレクトリ内のすべてのファイルを解凍するために使用しているコードです。解凍するのではなく、解凍するだけで十分です。

$ZipReNameExtract = Start-Job { 
#Ingoring the directories that a search is not require to check 
$ignore = @("Tests\","Old_Tests\") 

#Don't include "\" at the end of $loc - it will stop the script from matching first-level subfolders 
$Files=gci $NewSource -Fecurse | Where {$_.Extension -Match "zip" -And $_.FullName -Notlike $Ignore} 
    Foreach ($File in $Files) { 
     $NewSource = $File.FullName 
     #Join-Path is a standard Powershell cmdLet 
     $Destination = Join-Path (Split-Path -parent $File.FullName) $File.BaseName 
     Write-Host -Fore Green $Destination 
     #Start-Process needs the path to the exe and then the arguments passed seperately. 
     Start-Process -FilePath "C:\Program Files\7-Zip\7z.exe" -ArgumentList "x -y -o $NewSource $Destination" -Wait 
    } 
} 
Wait-Job $ZipReNameExtract 
Receive-Job $ZipReNameExtract 

助けがあれば教えてください。

負け犬...

+0

はあなたに負け犬ありがとう圧縮します

Get-ChildItem $targetPath | Compress-Archive -DestinationPath "$targetPath.zip" 

を! –

関連する問題