获取7-Zip错误 - 无法将带空格的文件名传递给Process.Start()方法

问题描述 投票:-1回答:2

我需要将.zip文件位置传递到下面的c#代码中的files参数中。

如果文件名不包含空格,一切正常。但是,如果文件名为DOES CONTAIN空格,则抛出错误。

找不到档案

以下是我的代码:任何人都可以建议我如何解决这个问题?

        static void UnzipToFolder(string zipPath, string extractPath, string[] files)
    {
        string zipLocation = ConfigurationManager.AppSettings["zipLocation"];            

        foreach (string file in files)
        {
            string sourceFileName = string.Empty;
            string destinationPath = string.Empty;
            var name = Path.GetFileNameWithoutExtension(file);
            sourceFileName = Path.Combine(zipPath, file);
            destinationPath = Path.Combine(extractPath, name);

            var processStartInfo = new ProcessStartInfo();
            processStartInfo.FileName = zipLocation;
            processStartInfo.Arguments = @"x " + sourceFileName + " -o" + destinationPath;
            processStartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            var process = Process.Start(processStartInfo);
            process.WaitForExit();
        }
    }
c# 7zip
2个回答
3
投票

在文件路径周围添加引号:

processStartInfo.Arguments = "x \"" + sourceFileName + "\" -o \"" + destinationPath + "\"";

或者为了便于阅读(使用C#6):

processStartInfo.Arguments = $"x \"{sourceFileName}\" -o \"{destinationPath}\"";

0
投票

必须引用包含空格的所有文件名和路径。

接下来,关于你的问题,如何说明如下路径:

7z a -tzip C:\ abc \ zipfilename C:\“Program files”\ DirectoryOrFile

© www.soinside.com 2019 - 2024. All rights reserved.