0
GetChildItem "C:\foo\bar" -Recurse -File | where { $_.Name -notmatch '[a-zA-Z_0-9^0-9]*(.pl|.xap|.go|.zip|.py|.tar|.gz|.tgz)' } | Compress-Archive -DestinationPath "C:\archive\xyz.zip"

当我在GetChildItem没有输出重定向的情况下执行命令时,该命令将返回我需要的内容。但是,当我将输出重定向到 时Compress-Archive,此 cmdlet 不保留目录结构(所有文件都存档在根目录),并且在单独执行命令\bar时不包括所有文件。GetChildItem

将不胜感激任何输入。我通常会使用 unix shell 命令,但是我受到环境的限制。

更新(3/4/19):

GetChildItem "C:\foo\bar" -Recurse | where { $_.Name -notmatch '[a-zA-Z_0-9^0-9]*(.pl|.xap|.go|.zip|.py|.tar|.gz|.tgz)' } | Compress-Archive -DestinationPath "C:\archive\xyz.zip"

删除 -File 开关/参数解决了文件夹结构问题,但我想在-notmatch开关中忽略的文件不再被忽略。给定以下示例:

/archive
    -/a
       -file.pl
    -/b
       -file.py
       -file1.html
    -index.html
    -some_junk.zip

此命令将产生以下输出:

VERBOSE: Preparing to compress...
VERBOSE: Performing the operation "Compress-Archive" on target "
C:\archive\a
C:\archive\b".
VERBOSE: Adding 'C:\archive\a\file.pl'.
VERBOSE: Adding 'C:\archive\b\file.py'.
VERBOSE: Adding 'C:\archive\b\file1.html'.
VERBOSE: Adding 'C:\archive\index.html'.
VERBOSE: Adding 'C:\archive\some_junk.zip'.

在这种情况下,.py、.zip 和 .pl 文件包含在 .zip 中

4

0 回答 0