Como fazer o loop de todos os arquivos no powershell para zipar todos os arquivos para o nome antigo

2

Estou tentando compactar todos os arquivos em um diretório, mas parece que não consigo usar o diretório ou o nome do arquivo antigo. Ele precisa excluir o arquivo antigo para que ele seja protegido no arquivo zip.

Isso é o que eu criei até agora:

$files = Get-ChildItem "D:\Backuptest\input\*" | 
ForEach ($filename in $files) { 
    $content = Get-Content $_.FullName
    & "C:\Program Files\WinRAR\Rar.exe" a -m0 -hps8Cs7y7RfLjYgYb -k -df $filename.rar
    }
    
por Erik Venema 03.08.2016 / 09:46

1 resposta

1

PowerShell Rar Archive, Encrypt, and Delete Multiple Files in a Folder

Com o Powershell e a sintaxe abaixo, eu ....

  • defina as variáveis para o diretório source na parte superior para informar o caminho para que os arquivos sejam compactados e
  • defina a variável para o diretório destination informando que o caminho para os arquivos zip arquivados criptografados devem ser enviados para ,

, o que o torna um pouco mais explícito do que era antes de informar onde os arquivos irão antes de excluí-los (não mais /System32 , etc,).

Desta forma, usa o ForEach (método) para obter o nome de arquivo do objeto de arquivo por arquivo no diretório de origem e em seguida, um-por-um, ele criará um novo arquivo criptografado com o mesmo nome que o arquivo não criptografado [source] e anexará o arquivo .rar ao final dele. ( Por exemplo, test123.txt ficará test123.txt.rar criptografado e test123.txt será excluído. )

Acho que o seu problema foi (1.) a sintaxe dos comandos rar não sendo correto, ou (2.) não tendo o destino nos comandos rar para o local de saída e que está sendo executado implicitamente a partir daquele diretório e apenas produzindo lá.

Script Powershell

$Source      = Get-ChildItem "D:\Backuptest\input"
$Destination = "D:\Backuptest\input"
$RarApp      = "C:\Program Files\WinRAR\Rar.exe" 

ForEach ($files in $Source) { 
    & $RarApp a $($Destination + $files.Name + ".rar") $($files.FullName) -m0 -hps8Cs7y7RfLjYgYb -k -df
    }

Mais recursos

por 04.08.2016 / 02:49