6 CMD 与 PowerShell 常用指令、使用终端运行 C 程序、字符编码(UTF-8)切换、中文乱码解决方案

发布于:2025-04-22 ⋅ 阅读:(20) ⋅ 点赞:(0)

1 CMD 与 PowerShell 常用指令

        在命令行环境中高效运行程序,掌握终端的基本操作命令至关重要。无论是 Windows 系统下的 CMD(命令提示符)还是 PowerShell,它们都配备了一系列实用的命令,助力我们管理文件、执行程序以及进行系统配置。以下是对 CMD 和 PowerShell 中常用终端指令的详细解析。

功能描述 CMD 命令 PowerShell 命令 备注
清屏 cls Clear-Host 或 clear 或 cls

在 CMD 中,直接使用 cls 即可清屏;

在 PowerShell 中三者均可,但 Clear-Host 更符合 PowerShell 风格。

Tab 补全 自动补全(按 Tab 键) 自动补全(按 Tab 键)

在输入命令、路径或文件名时,按 Tab 键可自动补全或显示可能的选项;

若存在多个匹配项,多次按下 Tab 键可循环显示这些选项,便于选择。

切换路径 cd [路径] Set-Location [路径] 或 cd [路径] cd 在两者中均可使用,但 PowerShell 的 Set-Location 提供了更多功能。
查看当前路径 cd(无参数) Get-Location 或 pwd

cd 在 CMD 中无参数时显示当前路径;

PowerShell 中 pwd 是 Print Working Directory 的缩写。

列出目录内容 dir Get-ChildItem 或 ls

dir 在 CMD 中列出目录内容;

PowerShell 中 ls 是 List 的缩写,更简洁。

创建目录 mkdir [目录名] New-Item -ItemType Directory -Name [目录名] 或 mkdir [目录名] mkdir 在两者中均可使用,但 PowerShell 的 New-Item 提供了更灵活的选项。
删除文件 del [文件名] Remove-Item [文件名]

del 在 CMD 中删除文件;

PowerShell 中 Remove-Item 更通用,也可删除目录。

删除目录 rmdir [目录名] Remove-Item [目录名] -Recurse

rmdir 在 CMD 中删除空目录;

PowerShell 中需加 -Recurse 参数删除非空目录。

查看命令帮助 help [命令名] Get-Help [命令名]

help 在 CMD 中提供基本帮助;

PowerShell 的 Get-Help 提供了更详细的帮助信息。

执行程序 直接输入程序名或路径 需注意路径问题

在 CMD 中,若程序位于当前目录,可直接输入程序名运行;

在 PowerShell 中,若当前路径未加入 PATH 环境变量,需使用 “.\程序名” 的形式运行当前目录下的程序。

退出程序/终端 exit 或 Ctrl + C(中断) exit 或 Ctrl + C(中断)

在 CMD 和 PowerShell 中:

    exit 命令用于正常退出终端;

    Ctrl + C 用于中断当前正在执行的命令或程序。

执行程序时的路径问题:

  • 在 CMD 中:如果程序位于当前目录,你可以直接输入程序名来运行它,即使当前目录没有加入 PATH 环境变量。
  • 在 PowerShell 中:出于安全考虑,如果当前目录没有加入 PATH 环境变量,你需要使用 .\ 程序名 的形式来运行当前目录下的程序。这里的 .\ 表示当前目录

2 在终端中执行 C 程序

        在终端中运行 C 程序是开发者常见的需求,不同的终端环境(如 CMD、PowerShell 或 VS Code 内置终端)提供了各自的操作方式。接下来,我将详细讲解如何在这些终端中编译并运行 C 程序,包括具体的命令示例和注意事项,帮助你快速上手。

2.1 定位 C 程序文件路径

        首先,我们需要确定当前源文件的存储位置。如果你是在 VS Code 中编辑源代码,可以通过以下简单步骤快速定位源文件所在的磁盘位置,以便后续在终端中进行编译和运行操作。

        具体操作如下:在 VS Code 的文件列表中,将鼠标悬停在目标源文件(例如 main.c)上,然后右键单击该文件。在弹出的右键菜单中,选择 “在文件资源管理器中显示” 选项。

        这样,文件资源管理器将会打开,并直接定位到该文件所在的目录位置。 

        若直接在文件资源管理器中双击 main.exe 文件,命令行窗口会在程序执行完毕后立即关闭,导致输出结果一闪而过,用户无法查看。这是因为窗口与程序的生命周期绑定,程序结束时窗口自动退出。

        为避免此问题,我们建议在终端中(如 CMD 或 PowerShell)运行程序。在终端中执行程序时,窗口会保持打开状态,直到用户手动关闭,从而可以完整地查看程序的输出和调试信息。

2.2 在 PowerShell 中运行 C 程序

        我们可以在包含 main.exe 文件的文件夹空白处右击鼠标,从弹出的菜单中选择 “在终端中打开” 选项,操作如下:

        请注意,当前使用的终端是 PowerShell。在 PowerShell 中,可通过 ls 命令查看目录内容

        需要特别注意的是,在 PowerShell 中运行程序或执行指令时,必须指定文件的相对路径,其中 .\ 代表当前目录。为提升操作效率,在输入文件名(如 main.exe)后,可按下 Tab 键自动补全前面的相对路径(即 .\)。具体操作示例如下图所示:

2.3 在 CMD 中运行 C 程序

        除了使用 PowerShell,你还可以在命令提示符(CMD)中运行程序。以下是具体步骤:

        1. 打开命令提示符:按下 Win + R 键,输入 cmd,然后点击 “确定”。

        2. 切换到程序所在的磁盘:如果程序位于 D 盘,输入 d: 并按 Enter 键。

        3. 进入程序所在的文件夹:例如,程序位于 D:\Code_Space\C_Language\Chapter1_HelloWorld,输入 cd D:\Code_Space\C_Language\Chapter1_HelloWorld
并按 Enter 键。

        4. 查看目录内容(可选):输入 dir 命令并按 Enter 键,查看当前目录下的文件和文件夹。

        5. 运行程序:输入 main.exe 并按 Enter 键,程序将开始执行。 

        你也可以使用文件的绝对路径来直接运行程序。具体操作是:在命令提示符中输入文件的绝对路径,格式为:盘符:\路径\文件名.后缀名。为方便操作,你可以在文件资源管理器中右键点击目标文件,选择 “复制文件地址” 或直接复制文件目录上方的完整路径,然后将其粘贴到命令提示符中执行。

2.4 添加 "在此打开 CMD" 右键菜单

        在通过 CMD 方式运行程序时,频繁切换盘符和路径可能会带来不便。为简化操作,你可以通过修改注册表,在文件夹的右键菜单中添加 “在此打开 CMD” 选项。以下是具体步骤:

        1. 打开注册表编辑器:按下 Win + R 键,打开 “运行” 窗口。输入 regedit,点击 “确定” 按钮,进入注册表编辑器。

        2. 定位到目标路径:在注册表编辑器的地址栏中,输入路径:计算机\HKEY_CLASSES_ROOT\Directory\Background\shell,然后按 Enter 键。

        3. 新建 “在此打开 CMD” 选项:在 shell 项下,右键选择 “新建” > “”。将新建的项命名为 open_cmd

        双击 open_cmd 项的默认值,输入“在此打开 cmd”,作为该选项的显示名称。 

        4. 获取 CMD 的路径:按下 Win 键,输入“cmd” 并搜索,然后选择 “打开文件位置”。

        右键命令提示符选择 “打开文件所在的位置”。

        然后得到 cmd.exe 的路径为:C:\Windows\system32\cmd.exe 。

        5. 设置图标(可选):在 open_cmd 项下,右键点击空白处,选择 “新建” > “字符串值”。

        将新建的字符串值命名为 Icon。双击 Icon 字符串值,输入 cmd.exe 的路径(如 C:\Windows\system32\cmd.exe),为选项设置图标。 

        6. 配置命令执行路径:在 open_cmd 项下,右键选择 “新建” > “”。将新建的项命名为 command。

        双击 command 项的默认值,输入 cmd.exe 的路径,如 C:\Windows\system32\cmd.exe

        7. 测试右键菜单选项:在任意文件夹的空白处,右键点击鼠标。在弹出的右键菜单中,选择 “在此打开 cmd” 选项。

        此时,CMD 窗口将在当前文件夹中打开,你可以直接输入可执行文件的名称来运行程序,无需再手动切换盘符和路径。 

2.5 在 VS Code 终端中运行 C 程序 

        除了利用系统自带的终端(如 PowerShell 或 CMD)运行程序外,你还可以直接在 VS Code 的内置终端中执行程序。以下是具体操作步骤:

  1. 打开 VS Code 并加载项目:
    • 启动 VS Code,并打开包含你源文件的文件夹或工作区。
  2. 打开内置终端:
    • 在 VS Code 中,你可以通过多种方式打开终端:
      • 使用快捷键 Ctrl+`(反引号,通常位于键盘左上角,与 ~ 键共享)。
      • 点击菜单栏中的 “终端” > “新建终端”
      • 使用命令面板(Ctrl+Shift+P),输入 “终端: 创建新终端” 并选择。
  3. 导航到程序所在目录(如果需要):
    • 默认情况下,终端会打开在当前工作区的根目录
    • 如果你的程序位于子目录中,可以使用 cd 命令切换到相应目录。例如:cd path/to/your/program
  4. 编译程序(如果需要):
    • 如果你的程序需要编译(如 C/C++ 程序),请在终端中使用相应的编译器命令。例如:gcc main.c -o main.exe
  5. 运行程序:

        在 PowerShell 中,若当前路径未加入 PATH 环境变量,需使用 .\程序名” 的形式运行当前目录下的程序。其中 .\ 代表当前目录。为提升操作效率,在输入文件名(如 main.exe)后,可按下 Tab 键自动补全前面的相对路径(即 .\),如下所示:

        在 CMD 中,若程序位于当前目录,可直接输入程序名运行,如下所示:


3 字符编码切换与中文乱码解决方案

3.1 编码切换的必要性

        在计算机系统中,编码(Encoding)是指将字符(如字母、数字、符号等)转换为计算机能够理解和存储的二进制数据的过程。不同的编码方式支持不同的字符集,并且可能以不同的方式表示相同的字符。当我们在命令行或脚本中处理文本数据时,如果编码方式不匹配,就可能导致乱码问题。

        在编程和计算机系统中,乱码问题通常是由于字符编码不匹配引起的。当你编写一个包含非 ASCII 字符(如中文)的程序,并在控制台或终端中运行时,如果控制台的字符编码不支持这些字符,就会出现乱码。

        以下面这个程序为例:

#include <stdio.h>

int main()
{
    // printf("Hello,World");
    printf("你好,世界!");

    return 0;
}

        这个程序输出了一句中文:“你好,世界!”。如果你在一个不支持 UTF-8 编码的控制台中运行这个程序,比如默认使用 GBK 或其他非 UTF-8 编码的 Windows CMD,那么输出的中文可能会显示为乱码。 

        若使用 VS Code 的自动编译和运行功能,程序运行结果将不会出现乱码现象。

        然而,若直接在终端环境中(PowerShell 或 CMD)运行程序,输出内容可能会出现乱码,具体示例如下:

3.2 中文乱码问题解决方案

3.2.1 PowerShell 编码设置

        如果你发现 PowerShell 控制台输出乱码,可能是因为控制台默认的编码(通常是 UTF-16)与外部程序或文件的编码不匹配。你可以尝试将控制台的输出编码设置为 UTF-8:

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
  • [Console]这是一个 .NET 类型,代表控制台。在 PowerShell 中,它用于访问和控制与控制台相关的属性和方法。

  • OutputEncoding这是 [Console] 类型的一个属性,表示控制台输出的文本编码。默认情况下,PowerShell 控制台的输出编码可能不是 UTF-8,这可能导致在输出包含非 ASCII 字符的文本时出现乱码。

  • [System.Text.Encoding]::UTF8这是一个 .NET 枚举值,代表 UTF-8 编码。UTF-8 是一种广泛使用的字符编码,能够表示 Unicode 标准中的任何字符,并且与 ASCII 编码兼容(即 ASCII 字符在 UTF-8 中使用相同的字节表示)

        通过执行这段指令,将 PowerShell 控制台的输出编码设置为 UTF-8。这样,当程序或脚本输出包含非 ASCII 字符的文本时(如中文字符、特殊符号等),这些字符就能以正确的形式显示在控制台上,而不会出现乱码。

3.2.2 CMD 编码设置

        在 CMD(命令提示符)中,如果你遇到输出乱码的问题,通常是因为控制台的代码页设置不正确。默认情况下,CMD 使用的代码页可能不支持某些字符集,特别是当你需要处理非 ASCII 字符(如中文、日文或其他国际字符)时。这时就会使用到 chcp 65001 命令。

chcp 65001
  • chcp这是 CMD 中的一个命令,用于更改控制台的代码页。代码页(Code Page)是一个字符映射表,它定义了字符与字节序列之间的对应关系。不同的代码页支持不同的字符集。
  • 65001这是 UTF-8 的代码页编号。通过执行 chcp 65001,你可以将 CMD 控制台的代码页设置为 UTF-8,从而支持更广泛的字符集,包括中文、日文、韩文等。

3.3 UTF-8 编码基础概述

        UTF-8(Unicode Transformation Format - 8-bit)是一种针对 Unicode 的可变长度字符编码,它能够用来表示 Unicode 标准中的任何字符,并且与 ASCII 编码向后兼容。UTF-8 使用 1 到 4 个字节来编码一个字符,具体使用多少字节取决于字符的 Unicode 码点:

  • ASCII 字符(U+0000 到 U+007F):使用 1 个字节编码,与 ASCII 编码完全相同。
  • 常用字符(如拉丁字母、希腊字母、西里尔字母等,大部分在 U+0080 到 U+07FF 范围内):使用 2 个字节编码。
  • 其他字符(如中文、日文、韩文等大部分在 U+0800 到 U+FFFF 范围内):使用 3 个字节编码
  • 特殊字符和补充字符(U+10000 到 U+10FFFF):使用 4 个字节编码

3.4 采用 UTF-8 编码的优势

  1. 广泛支持:UTF-8 是一种国际标准的字符编码,被广泛应用于互联网、操作系统、编程语言和各种软件中。

  2. 兼容性:UTF-8 与 ASCII 编码向后兼容,这意味着所有 ASCII 字符在 UTF-8 中都有相同的编码。这使得 UTF-8 在处理英文文本时与 ASCII 一样高效。

  3. 多语言支持:UTF-8 能够表示 Unicode 标准中的任何字符,包括中文、日文、韩文、阿拉伯文、希伯来文等各种语言的字符。

  4. 避免乱码:通过将控制台的字符编码设置为 UTF-8,你可以确保程序输出的非 ASCII 字符能够正确显示,避免出现乱码。


网站公告

今日签到

点亮在社区的每一天
去签到