CMD 命令行入门教程
从零开始,掌握 Windows 命令行的强大威力
第一部分:基础入门
在IDE中,点击“运行”是透明的。
命令行则让你直面这个过程。
1.1 打开与退出
打开 CMD (命令提示符)
按下键盘上的 Win + R 键。
在弹出的“运行”窗口中输入 cmd。
按下回车键。
退出 CMD
在窗口中输入以下命令并回车:
exit
1.2 理解提示符:你的GPS
打开CMD后,你会看到类似:
C:\Users\YourName>
我在哪儿? C:\Users\YourName 是你当前的工作目录。
我可以输入命令了吗? > 符号表示系统已准备就绪。
1.3 核心导航命令 (1/3)
dir - 查看当前位置有什么
列出当前目录下的所有文件和子目录。
dir
常用参数:
dir /p: 分屏显示,防止内容滚动太快。
dir /w: 以紧凑的宽屏格式显示。
1.3 核心导航命令 (2/3)
cd - 移动到其他位置
进入子目录 (例如 Desktop):cd Desktop
返回上一级目录:cd ..
绝对路径 vs 相对路径: 绝对路径从根目录开始,无论在哪都能准确定位。cd C:\Windows\System32
1.3 核心导航命令 (3/3)
切换驱动器
cd 命令不能跨盘符。要切换到D盘,直接输入盘符和冒号:
d:
要切回C盘:
c:
1.4 屏幕管理 & 1.5 获取帮助
cls - 清空屏幕
当屏幕内容杂乱时,用它来清理。
cls
获取帮助
help: 查看所有内置命令的列表。
[命令] /?: 查看特定命令的详细用法,这是你最好的朋友!
dir /?
1.6 动手实践
打开CMD,确认当前位置 (C:\Users\YourName>)。
查看当前目录,找到 Documents 目录。dir
进入 Documents 目录。cd Documents
再次查看,对比文件资源管理器。dir
返回用户主目录。cd ..
用绝对路径进入Windows目录。cd C:\Windows
分页查看Windows目录。dir /p
清空屏幕。cls
预习 copy 命令。copy /?
退出CMD。exit
第二部分:文件与目录操作
本阶段的目标是让你脱离图形界面,仅用键盘就能高效地完成所有文件和文件夹的管理工作。
准备工作:创建“沙盒”
cd Desktop
mkdir cmd_practice
cd cmd_practice
2.1 创建:从无到有
mkdir (或 md) - 创建新目录
mkdir src
mkdir include
创建文件
echo创建带内容的文件 (^转义):echo #include ^
type nul创建空文件 :type nul > include\utils.h
2.2 查看 & 2.3 复制
type - 显示文本文件内容
type src\main.c
copy - 复制文件
创建副本:copy src\main.c src\main_backup.c
复制到当前目录 (.):copy src\main.c .
2.4 移动与重命名
move - 身兼两职
重命名文件:move main.c app.c
移动文件到目录:move include\utils.h src\
2.5 删除:清理空间
终极警告: 命令行删除是永久性的,不会进入回收站!请再三确认!
del - 删除文件
del src\main_backup.c
rd (或 rmdir) - 删除目录
删除空目录:rd include
删除非空目录 (危险操作!):rd /s /q src
2.6 通配符:批量操作的利器
当你需要对多个相似文件进行操作时,逐个指定文件名既繁琐又容易出错。通配符让你能够用简洁的模式匹配多个文件。
* (星号) - 匹配任意数量的字符
查看所有文本文件:dir *.txt
复制所有C源文件到备份目录:copy *.c backup\
删除所有临时文件:del temp*.*
? (问号) - 匹配单个字符
查找game1.exe, game2.exe等:dir game?.exe
删除log1.txt到log9.txt:del log?.txt
安全提醒: 使用通配符删除文件时要格外小心!建议先用 dir 命令预览匹配的文件,确认无误后再执行删除操作。
2.7 动手实践
一个完整的项目初始化和清理流程。
创建项目目录: mkdir MyGame
进入目录: cd MyGame
创建子目录: mkdir source, mkdir assets
创建源文件: echo int main() {} > source\game.c
创建备份: copy source\game.c game_test.c
重命名备份: move game_test.c test_backup.c
删除备份: del test_backup.c
返回上一级: cd ..
删除整个项目: rd /s /q MyGame
第三部分:程序执行与环境
理解程序是如何被操作系统发现、编译和执行的,并亲手完成从 .c 源代码到可运行程序的完整过程。
3.1 运行程序 & 3.2 环境变量 PATH
命令的本质
dir, cd, notepad 本质都是可执行程序。
notepad // 打开记事本
calc // 打开计算器
环境变量 PATH
PATH 是一个目录列表。系统只在这些目录里寻找你输入的命令。
查看你自己的 PATH:
path
3.3 编译并运行C代码 (1/2)
前提:安装编译器并配置PATH
安装 MinGW-w64 (GCC for Windows)。
将 MinGW 的 bin 目录 (如 C:\mingw64\bin) 添加到系统 PATH 环境变量中。
机房快捷方式:机房电脑已安装 Dev-C++,它自带 GCC 编译器。右键桌面 Dev-C++ 图标 → 选择"打开文件所在的位置" → 进入安装目录找到 MinGW64\bin,把这个完整路径添加到 PATH。
重启CMD,验证安装:gcc --version
3.3 编译并运行C代码 (2/2)
1. 创建源代码 hello.c
echo #include ^
echo int main() { >> hello.c
echo printf("Hello from CMD!\n"); >> hello.c
echo return 0; >> hello.c
echo } >> hello.c
注意: ^ 用于转义特殊字符 < 和 >。>> 表示追加内容到文件。
也可以直接用 notepad hello.c 打开记事本,把代码粘贴进去保存。
2. 编译
gcc hello.c -o hello.exe
3. 运行
因为当前目录(.)不在PATH中,需要指定路径:
.\hello.exe
3.4 命令行参数 (argc, argv)
通过命令行向C程序传递数据。
1. 创建 args.c 并编译
#include
int main(int argc, char *argv[]) {
printf("Total arguments: %d\n", argc);
for (int i = 0; i < argc; i++) {
printf("argv[%d]: %s\n", i, argv[i]);
}
return 0;
}
gcc args.c -o args.exe
2. 带着参数运行 (用空格隔开)
.\args.exe hello world 123
3. 查看输出
Total arguments: 4
argv[0]: .\args.exe
argv[1]: hello
argv[2]: world
argv[3]: 123
第四部分:提升效率的进阶技巧
学会控制命令的输入和输出,并将多个命令串联起来,形成强大的工作流。
4.1 输入/输出重定向
> (覆盖输出)
将命令结果写入文件,会覆盖原有内容。
dir > file_list.txt
>> (追加输出)
将命令结果追加到文件末尾,常用于日志记录。
echo Program started at %time% > log.txt
echo Program finished at %time% >> log.txt
(%time% 是一个代表当前时间的系统变量)
4.2 find:基础文本搜索
find 是Windows内置的基础文本搜索工具,用于在文件或命令输出中查找指定的字符串。
基本语法
find "搜索内容" 文件名
常用参数
/i: 忽略大小写
/c: 只显示匹配行的数量
/v: 显示不包含指定字符串的行
/n: 显示行号
实际应用示例
在文件中搜索:find "main" hello.c
统计匹配行数:find /c "error" log.txt
忽略大小写搜索:find /i "ERROR" log.txt
4.3 管道 (|):命令的流水线
将前一个命令的输出,直接作为后一个命令的输入。
场景1: 查找所有 .c 文件
dir | find ".c"
场景2: 查找所有Chrome进程
tasklist 命令列出所有进程。
tasklist | find "chrome.exe"
管道让你能将简单工具组合成强大的流程。
4.4 findstr:强大的文本搜索
findstr 是Windows原生的强大文本搜索工具,比 find 更灵活,支持正则表达式和多种搜索模式。
基本语法
findstr [选项] "搜索内容" 文件名
常用参数
/i: 忽略大小写
/n: 显示行号
/c:"文本": 搜索包含空格的精确字符串
/r: 使用正则表达式
/s: 在子目录中递归搜索
4.3 findstr:实际应用示例
场景1: 在源代码中查找函数
findstr /i /n "main" *.c
在所有.c文件中查找包含"main"的行,忽略大小写并显示行号。
场景2: 查找配置文件中的设置
findstr /c:"server port" config.txt
查找包含"server port"的精确字符串。
场景3: 在日志中查找错误
findstr /i "error\|warning\|fail" *.log
使用正则表达式查找包含error、warning或fail的行。
场景4: 递归搜索项目文件
findstr /s /i "TODO" *.java
在当前目录及子目录的所有Java文件中查找TODO注释。
4.5 简单的批处理脚本 (.bat)
当你需要反复执行一系列命令时,把它们写进一个 .bat 文件中。
示例: build.bat 编译并运行C程序
@echo off
echo Cleaning previous build...
del hello.exe
echo Compiling hello.c...
gcc hello.c -o hello.exe
echo Running the program:
.\hello.exe
现在,只需在CMD中运行 build.bat 即可完成所有步骤!
4.5 Bash Is All You Need
Claude 工程师 Thariq Shihipar 的结论:Bash Is All You Need。
这句话不是说“只学 Bash 就够了”,而是强调:在 Code Agent 时代,命令行是最通用、最可组合、最可自动化的执行界面。
为什么这件事现在更重要
统一接口:无论是编译、测试、Git、部署,本质都可以收敛为命令行调用。
天然可编排:管道、重定向、脚本让“单步操作”升级为“可复用流程”。
Agent 友好:Code Agent 最稳定的协作方式之一,就是读取输出并继续执行下一条命令。
课堂行动:后续所有“点按钮能完成的事”,都尽量补一条等价命令行写法。
参考:Building agents with the Claude Agent SDK、Anthropic Bash Tool
*4.6 高级批处理脚本编程
掌握条件判断、循环和变量,让你的批处理脚本更加智能和强大。
本节内容
条件判断: 使用 if 语句进行逻辑控制
循环结构: 使用 for 循环批量处理
变量操作: 动态存储和使用数据
综合应用: 实际项目自动化脚本
这些技能让你能够编写真正实用的自动化工具。
条件判断:if 语句
使用 if 语句让脚本根据不同条件执行不同操作。
基本语法
if condition (
command1
command2
) else (
command3
command4
)
常用条件判断
if exist filename - 检查文件是否存在
if "%var%"=="value" - 字符串比较
if %num% GTR 10 - 数值比较 (GTR, LSS, EQU)
if errorlevel 1 - 检查命令执行结果
条件判断实例
检查文件存在性
@echo off
set "target_file=config.txt"
if exist "%target_file%" (
echo 配置文件存在,开始处理...
type "%target_file%"
) else (
echo 配置文件不存在,创建默认配置...
echo default_setting=true > "%target_file%"
)
用户输入验证
@echo off
set /p user_choice="请选择操作 (1-备份, 2-清理): "
if "%user_choice%"=="1" (
echo 开始备份操作...
xcopy *.txt backup\ /y
) else if "%user_choice%"=="2" (
echo 开始清理操作...
del temp\*.tmp
) else (
echo 无效选择,请重新运行脚本
)
循环结构:for 循环
使用 for 循环批量处理文件、目录或数据序列。
基本语法形式
:: 遍历文件
for %%i in (*.txt) do command
:: 遍历目录
for /d %%i in (*) do command
:: 遍历数字序列
for /l %%i in (start,step,end) do command
:: 处理文件内容
for /f "tokens=1,2" %%i in (file.txt) do command
注意: 在批处理文件中使用 %%i,在命令行中使用 %i
for 循环实例
批量重命名文件
@echo off
set counter=1
for %%f in (*.jpg) do (
ren "%%f" "photo_!counter!.jpg"
set /a counter+=1
)
遍历子目录并统计文件
@echo off
echo 目录文件统计报告
echo ==================
for /d %%d in (*) do (
echo 正在统计目录: %%d
dir "%%d" /b /a-d | find /c /v "" > temp.txt
set /p file_count=
set 语句详解
set 是批处理脚本中最重要的命令之一,用于变量操作和用户交互。
基本语法形式
:: 基本变量设置
set variable_name=value
:: 用户输入
set /p variable_name=prompt_message
:: 数学运算
set /a variable_name=expression
:: 显示所有环境变量
set
:: 显示特定变量
set variable_name
重要: 等号两边不要有空格,使用引号可以包含空格
set 语句实用示例
基本变量设置与字符串操作
:: 基本设置
set "username=张三"
set "project_path=C:\MyProject"
set "config_file=%project_path%\config.ini"
:: 字符串拼接
set "full_name=%username%_developer"
set "backup_name=%project_path%_backup_%date:~0,4%%date:~5,2%%date:~8,2%"
:: 清空变量
set "temp_var="
用户输入与验证
:: 获取用户输入
set /p "user_name=请输入您的姓名: "
set /p "project_type=选择项目类型 (web/desktop/mobile): "
:: 输入验证示例
:input_loop
set /p "confirm=确认删除所有文件吗? (y/n): "
if /i "%confirm%"=="y" goto delete_files
if /i "%confirm%"=="n" goto cancel
echo 请输入 y 或 n
goto input_loop
set /a 数学运算
使用 set /a 进行整数数学运算,支持多种运算符。
基本运算
:: 基本算术运算
set /a "result=10+5" :: 加法: 15
set /a "result=20-8" :: 减法: 12
set /a "result=6*7" :: 乘法: 42
set /a "result=15/3" :: 除法: 5
set /a "result=17%%5" :: 取余: 2
:: 复合运算
set /a "result=(10+5)*2" :: 括号优先: 30
set /a "result=2**3" :: 幂运算: 8
实用计算示例
:: 计数器应用
set /a "counter=0"
for %%f in (*.txt) do (
set /a "counter+=1"
echo 处理第 !counter! 个文件: %%f
)
:: 进度计算
set /a "total_files=100"
set /a "processed=75"
set /a "percentage=processed*100/total_files"
echo 进度: %percentage%%%
:: 时间计算 (秒转换)
set /a "total_seconds=3665"
set /a "hours=total_seconds/3600"
set /a "minutes=(total_seconds%%3600)/60"
set /a "seconds=total_seconds%%60"
echo 时间: %hours%:%minutes%:%seconds%
变量操作与环境设置
变量定义与使用
:: 设置变量
set "project_name=MyProject"
set "version=1.0"
set /a "build_number=100"
:: 使用变量
echo 项目: %project_name%
echo 版本: %version%
echo 构建号: %build_number%
:: 延迟变量展开 (用于循环中)
setlocal enabledelayedexpansion
set counter=0
for %%i in (*.txt) do (
set /a counter+=1
echo 文件 !counter!: %%i
)
环境变量与路径操作
:: 获取当前目录和文件信息
set "current_dir=%cd%"
set "script_dir=%~dp0"
set "temp_dir=%temp%\%project_name%"
:: 创建临时工作目录
if not exist "%temp_dir%" mkdir "%temp_dir%"
综合应用:项目自动化脚本
结合条件判断、循环和变量,创建实用的项目管理脚本。
@echo off
setlocal enabledelayedexpansion
title 项目自动化管理工具
:: 设置项目变量
set "project_name=WebProject"
set "backup_dir=backup_%date:~0,4%%date:~5,2%%date:~8,2%"
set "log_file=automation.log"
echo ================================
echo 项目自动化管理工具 v1.0
echo ================================
echo.
:: 检查项目目录结构
echo [%time%] 检查项目结构... >> %log_file%
if not exist "src" (
echo 创建 src 目录...
mkdir src
echo [%time%] 创建 src 目录 >> %log_file%
)
if not exist "dist" (
echo 创建 dist 目录...
mkdir dist
echo [%time%] 创建 dist 目录 >> %log_file%
)
:: 备份现有文件
echo 开始备份文件...
if exist "%backup_dir%" rmdir /s /q "%backup_dir%"
mkdir "%backup_dir%"
set file_count=0
for %%f in (src\*.js src\*.css src\*.html) do (
copy "%%f" "%backup_dir%\" > nul
set /a file_count+=1
echo 备份: %%f
)
echo 备份完成,共备份 !file_count! 个文件
echo [%time%] 备份完成,文件数: !file_count! >> %log_file%
综合应用:构建与部署脚本
:: 清理旧的构建文件
echo 清理构建目录...
if exist "dist\*" del /q "dist\*"
:: 编译处理 (模拟)
echo 开始构建项目...
set build_success=true
for %%f in (src\*.js) do (
echo 处理: %%f
:: 这里可以调用实际的编译工具
copy "%%f" "dist\" > nul
if errorlevel 1 (
echo 错误: 处理 %%f 失败
set build_success=false
echo [%time%] 构建失败: %%f >> %log_file%
)
)
:: 检查构建结果
if "%build_success%"=="true" (
echo.
echo ✓ 构建成功完成!
echo [%time%] 构建成功 >> %log_file%
:: 生成部署报告
echo 生成部署报告...
echo 项目: %project_name% > deploy_report.txt
echo 构建时间: %date% %time% >> deploy_report.txt
echo 文件列表: >> deploy_report.txt
dir dist /b >> deploy_report.txt
echo ✓ 部署报告已生成: deploy_report.txt
) else (
echo.
echo ✗ 构建失败,请检查错误日志
echo [%time%] 构建失败 >> %log_file%
)
echo.
echo 自动化流程完成,详细日志请查看: %log_file%
pause
*4.7 动手实践
任务: 找出 C:\Windows\System32 下所有 .dll 文件,保存列表,并统计数量。
1. 保存列表
用管道连接 dir 和 find,再用重定向保存结果。
dir C:\Windows\System32 | find ".dll" > dll_list.txt
2. 统计数量
使用 find 命令的 /c (count) 参数。
dir C:\Windows\System32 | find /c ".dll"
用两行核心命令,完成了一个原本需要手动操作很久的任务。
第五部分:常用命令速查表 (1/4)
文件与目录
dir: 列出内容 (/p, /s)
cd: 切换目录 (.., \)
mkdir (md): 创建目录
copy: 复制文件
move: 移动或重命名
del: 删除文件
rd (rmdir): 删除目录 (/s /q 强制)
type: 显示文本内容
cls: 清屏
第五部分:常用命令速查表 (2/4)
网络相关
ping [host]: 测试网络连接和延迟。
ipconfig: 查看本机IP配置 (/all 看详情)。
nslookup [domain]: 查询域名对应的IP地址。
tracert [host]: 跟踪数据包路由路径。
netstat -an: 显示所有网络连接和监听端口。
第五部分:常用命令速查表 (3/4)
系统管理
tasklist: 显示运行中的进程。
taskkill /im [name] /f: 强制终止进程。
systeminfo: 显示详细的系统配置信息。
shutdown /s /t [secs]: 定时关机。
sfc /scannow: 扫描并修复系统文件。
chkdsk c: /f: 检查并修复C盘错误。
第五部分:常用命令速查表 (4/4)
学习建议
不必死记硬背:把列表当作字典来查。
多用 /?:[命令名] /? 是你最好的老师。
组合使用:用管道 | 和 find 过滤命令输出,例如:
systeminfo | find "System Boot Time"
恭喜你,完成了本次学习!
上一页
1 / X
下一页