• 如何在命令行启动参数上转义文件路径中的空格


    如下代码,在启动参数中传一个路径,如果路径没有空格,像这样的路径 D:\protobuf-3.21.5 直接传过去就行,但有一些特例,如果路径中有空格的话像这样的路径 D:\visual stdio 2017代码 ,编译时就会发生崩溃,什么原因呢?原因就是仔细观察中间有两个空格。在程序中调用cmd命令打开一个文件,而文件路径带有空格,如果直接把路径传给cmd,那么cmd就会把路径空格前面的部分当做是一个参数,空格后当做另一个参数,导致程序出错,解决方法是把传入的参数前后添加双引号。

    “D:\visual stdio 2017” 这样就可以了。

    #include"ReadFile.h"
    #include"ReadFileRow.h"
    
    #include"WriteToCsv.h"
    
    int main(int argc, char** argv) {
    	if (argc > 1){
    		ReadFile rd;
    		std::string str(argv[1]);
    		rd.Test(str);
    		ReadFileRow rf;
    		rf.Test(str);
    	}
    	else{
    		std::cerr << "error:need a dir\n";
    		return -1;
    	}
    
    	return 0;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    在这里插入图片描述

    • Windows 命令提示符和PowerShell等命令行环境使用空格分隔命令和参数,但文件和文件夹名称也可以包含空格。要指定带有空格的文件路径,您需要“转义”它。

    • 命令行 101:为什么必须转义空格。

    • “转义”字符会改变其含义。例如,转义空格将导致 shell 将其视为标准空格字符,而不是分隔命令行参数的特殊字符。

    • 例如,假设您有一个要查看其内容的文本文件。您可以使用 type 命令执行此操作。假设文本文件位于,命令提示符中的以下命令将显示其内容:

    • C:\Test\File.txt。

    • 键入 C:\Test\File.txt。

    • 伟大的。现在,如果您有相同的文件怎么办?如果您尝试运行以下命令,它将不起作用——文件路径中的那些空格会妨碍您。

    • C:\Test Folder\Test File.txt。

    • 键入 C:\Test Folder\Test File.txt。

    • 命令行认为您正在尝试查找名为的文件 并说它“找不到指定的路径”。

    在 Windows 上转义空间的三种方法

    您可以通过三种不同的方式在 Windows 上转义文件路径:

    • 通过将路径(或路径的一部分)括在双引号 ( ” ) 中。
    • 通过在每个空格前添加插入符 (^)。(这仅适用于命令提示符/CMD,并且似乎不适用于每个命令)。
    • 通过在每个空格前添加重音符号 (`)。(这仅适用于 PowerShell,但它始终有效)。

    我们将向您展示如何使用每种方法。

    • 用引号 ( ” ) 将路径括起来。
      • 确保 Windows 正确处理文件路径的标准方法是将其括在双引号 (") 字符中。例如,使用上面的示例命令,我们只需运行以下命令:
      • 键入“C:\Test Folder\Test File.txt” 。

    如果您愿意,您实际上可以用引号将路径的一部分括起来。例如,假设您在该文件夹中有一个名为 File.txt 的文件。您可以运行以下命令:

    键入 C:“测试文件夹”\File.txt。

    但是,这不是必须的——在大多数情况下,您可以只在整个路径周围使用引号。

  • 相关阅读:
    Unity C#随笔:简述String和StringBuilder的区别
    Web安全与攻防
    【Python】记录从3.9升级到3.11踩的坑
    TF-IDF 文本匹配实战详细教程
    【算法练习Day25】 重新安排行程&&N 皇后&& 解数独
    技术引领未来, IDC TechScape中国数据安全发展路线图首发
    vue常用修饰符-- stop,prevent,.enter,once,lazy,number,trim
    数据库笔记
    基于Python的ArcGIS流程化数据处理及应用开发
    网络安全——(黑客)自学
  • 原文地址:https://blog.csdn.net/qq_44918090/article/details/126946949