У меня есть ряд файлов в папке, которые содержат большие файлы журнала
-20180907 1229 debug.log
-20180907 1229 system.log
Я хочу написать сценарий PowerShell для архивирования их по размеру. Вот мой сценарий:
dir *.log | % {
$archive = '"' + $_.Name + '.7z"'
$archive
$source = '"' + $_.Name + '"'
$source
&"C:\Program Files\7-Zip\7z.exe" -mx9 a -t7z $archive $source -WhatIf
}
Когда я запускаю его, я получаю следующий вывод:
"-20180907 1229 debug.log.7z"
"-20180907 1229 debug.log"
7z.exe :
At C:\Users\User\Temporary\Test 7z\archive-logs.ps1:6 char:5
+ &"C:\Program Files\7-Zip\7z.exe" -mx9 a -t7z $archive $source
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Command Line Error:
Unknown switch:
-20180907 1229 debug.log.7z
"-20180907 1229 system.log.7z"
"-20180907 1229 system.log"
7z.exe :
At C:\Users\User\Temporary\Test 7z\archive-logs.ps1:6 char:5
+ &"C:\Program Files\7-Zip\7z.exe" -mx9 a -t7z $archive $source
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Command Line Error:
Unknown switch:
-20180907 1229 system.log.7z
Несмотря на то, что я заключаю имя файла в двойные кавычки, оно выглядит так, как 7-Zip игнорирует двойные кавычки.
Есть идеи?
Я пробовал этот вариант (заключая имена файлов в одинарные кавычки):
dir *.log | % {
$archive = "'" + $_.Name + ".7z'"
$archive
$source = "'" + $_.Name + "'"
$source
&"C:\Program Files\7-Zip\7z.exe" -mx9 a -t7z $archive $source
}
И на этот раз я получил такой вывод:
'-20180907 1229 debug.log.7z'
'-20180907 1229 debug.log'
7-Zip 18.05 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-04-30
Open archive: '-20180907 1229 debug.log.7z'
--
Path = '-20180907 1229 debug.log.7z'
Type = 7z
Physical Size = 32
Headers Size = 0
Solid = -
Blocks = 0
Scanning the drive:
7z.exe :
At C:\Users\User\Temporary\Test 7z\archive-logs-B.ps1:6 char:5
+ &"C:\Program Files\7-Zip\7z.exe" -mx9 a -t7z $archive $source
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
WARNING: The system cannot find the file specified.
'-20180907 1229 debug.log'
0 files, 0 bytes
Updating archive: '-20180907 1229 debug.log.7z'
Add new data to archive: 0 files, 0 bytes
Files read from disk: 0
Archive size: 32 bytes (1 KiB)
Scan WARNINGS for files and folders:
'-20180907 1229 debug.log' : The system cannot find the file specified.
----------------
Scan WARNINGS: 1
Он создает файлы типа '-20180907 1229 debug.log.7z'
, но без содержимого.