如何循环 powershell 中的所有文件以将每个文件压缩为其旧名称

如何循环 powershell 中的所有文件以将每个文件压缩为其旧名称

我正在尝试压缩目录中的所有文件,但似乎无法使用目录或旧文件名。它需要删除旧文件,以便它在 zip 文件中受到保护。

这是我目前想到的:

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

答案1

PowerShell Rar 存档、加密和删除文件夹中的多个文件

电源外壳以及下面的语法我....

  • 设置变量来源目录顶部告诉它 小路获取要压缩的文件, 和
  • 设置变量 目的地目录告诉它小路 加密档案 rar 文件将被输出到

因此,这使得它比以前更明确地告诉它在删除文件之前文件将存放到哪里(不再/System32, ETC,)。

这种方式使用ForEach(方法)获取源目录中每个文件的文件对象文件名,然后逐个创建一个新的 rar 加密文件,其文件名与非加密的 [源] 文件相同,并将 .rar 附加到其末尾。(例如test123.txt将被test123.txt.rar加密,然后test123.txt将被删除。

我认为你的问题是(1.)rar命令不正确,或者(2.) rar 命令中没有输出位置的目标,并且从该目录隐式运行并仅在那里输出。


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
    }

更多资源

相关内容