【问题标题】:Compression.ZipFile throws ArgumentException "The path is not of a legal form"Compression.ZipFile 抛出 ArgumentException “路径不是合法形式”
【发布时间】:2014-01-06 11:34:11
【问题描述】:

我正在尝试使用 Powershell v3 和 .NET 4.5 更改文件夹中文件中的字符串,然后压缩文件夹的内容。我已经让字符串替换工作了,但随后 zip 继续在目录路径上抛出 ArgumentException,即使我确定它是正确的。

Exception calling "CreateFromDirectory" with "4" argument(s): "The path is not of a legal form."
At line:5 char:4
+    [System.IO.Compression.ZipFile]::CreateFromDirectory($sourcedir,
+    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : ArgumentException

关于 ZipFile.CreateFromDirectory 的 Microsoft 文章:
http://msdn.microsoft.com/en-us/library/hh485721(v=vs.110).aspx

我正在尝试的代码:

function ZipFiles( $zipfilename, $sourcedir )
{
   [Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem")
   $compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
   [System.IO.Compression.ZipFile]::CreateFromDirectory($sourcedir,
        $zipfilename, $compressionLevel, $false)
}

Get-Content public-build\index.html | ForEach-Object { $_ -replace "data-default-api=`"dev`"", "data-default-api=`"test`"" } | Set-Content public-build\index2.html
cp public-build\index2.html public-build\index.html
rm public-build\index2.html
ZipFiles("public-build.zip", "C:\Users\Administrator\Desktop\public-build")

我尝试将“C:\Users\Administrator\Desktop\public-build”更改为: "C:\Users\Administrator\Desktop\public-build\"
"C:\\Users\\Administrator\\Desktop\\public-build"
"C:\\Users\\Administrator\\Desktop\\public-build\\"
“公共建设”
“公共构建”
".\public-build"
".\public-build\"
都抛出相同的错误。我也尝试使用只是“publicbuild”的文件夹名称,以防它是连字符,但仍然出现相同的错误。

我有点难过。我要做的就是压缩文件夹。希望有人会指出我正在犯的一些明显错误,但除此之外,我也欢迎任何替代方法。我不想安装第三方工具,但如果没有其他解决方案,可能不得不求助于它。

【问题讨论】:

    标签: .net powershell


    【解决方案1】:

    我认为问题在于您在调用函数时提供参数的方式。在 Powershell 中,参数以空格分隔值的形式提供,它不使用 () 语法。

    ZipFiles "public-build.zip" "C:\Users\Administrator\Desktop\public-build"
    

    【讨论】:

    • 这对我来说也是一个重要的时刻!谢谢!
    • 我实际上只是在调用完全相同的函数时遇到了同样的问题,太疯狂了!
    • 这个答案拯救了我的一天!谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多