diff --git "a/members/zhbbll/notes/Git\346\225\231\347\250\213.md" "b/members/zhbbll/notes/Git\346\225\231\347\250\213.md" new file mode 100644 index 0000000..f290aee --- /dev/null +++ "b/members/zhbbll/notes/Git\346\225\231\347\250\213.md" @@ -0,0 +1,223 @@ +# Git教程(Windows版) + +## 1 Git + +### 1.1 Git介绍 + +#### 1.1.1 分布式版本控制工具 + +Git是一种分布式版本控制系统,允许每个开发者在自己的本地仓库中保存项目的完整历史记录。与集中式控制系统不同,Git无需依赖于中央服务器,开发者可以独立地创建分支、进行提交,之后再与团队成员进行代码合并。这种分布式特性使得Git在脱机情况下也能继续工作,并且更具容错性。 + +#### 1.1.2 集中式版本控制工具 + +集中式版本控制工具依赖于中央服务器来保存所有的代码及历史记录,如Subversion (SVN)。开发者必须连接到服务器才能获取代码的最新版本或进行提交。显而易见的缺点是中央服务器一旦出现故障,开发者就无法提交更新。与Git相比,集中式工具在网络不稳定时操作会受限。 + +#### 1.1.3 git工作机制 + +![Screenshot_2024-10-26-20-46-47-49_149003a2d400f6a](./images/Screenshot_2024-10-26-20-46-47-49_149003a2d400f6a.jpg) + +- **工作区 **:这是我们实际进行代码编写、修改的地方,是项目的文件夹。我们在这里对文件进行编辑、创建或删除,但这些修改还没有被Git管理,也没有被记录到版本历史中。 + +- **暂存区:又称“索引区”或“缓存区”。当我们使用 `git add` 命令后,文件的改动会被添加到暂存区,这意味着这些改动已被Git记录,但还没有正式提交。暂存区的作用是“暂存”修改内容,方便在提交前做进一步的检查或打包。 + +- **本地库 **:是Git的本地数据库,用于保存所有提交的历史记录。通过 `git commit` 命令可以将暂存区的改动提交到本地库。每次提交都会形成一个独立的版本,可以随时回溯、查看或恢复。 + +### 1.2 Git安装 + +1. 访问[Git官方网站](https://git-scm.com/)下载合适的版本。 +2. 在安装过程中可以选择默认设置即可,这里不过多赘述。 +3. 完成安装后,在终端中输入 `git --version` 验证安装是否成功。 + +### 1.3 Git常用命令 + + + +1. **设置用户签名**:`git config --global user.name <用户名> `,`git config --global user.email <邮箱>` + +2. **初始化仓库**:`git init` 初始化一个新的Git仓库。即创建一个.git目录,若是使用Clone的代码自带.git所以不需要初始化。 + +3. **查看状态**:`git status` 查看当前文件的修改状态。 + + ![屏幕截图 2024-10-26 210707](./images/status.png) + +4. **添加文件到暂存区**:`git add <文件名>` 将文件添加到暂存区;`git add .` 添加所有修改过的文件。 + +5. **提交更改**:`git commit -m "提交说明"` 提交暂存区内容并附带说明。即是提交到本地主机的仓库里面。 + + ![屏幕截图 2024-10-26 211208](./images/commit.png) + +6. **推送到远程仓库**:`git push` 将本地仓库中的提交记录上传到Github,使其在远程仓库(例如 Github网页)中也能显示这些改动。 + + ![屏幕截图 2024-10-26 215300](./images/push.png) + + +7. **查看提交历史**:`git reflog` 查看版本信息,`git log`查看更详细的版本信息。 + + ![屏幕截图 2024-10-26 215725](./images/reflog.png) + +8. **回退版本**:`git reset ` 这条命令将 HEAD 指针移动到指定的提交(``)。 + + ![屏幕截图 2024-10-26 220118](./images/reset.png) + + - 实例代码中,我回退了1db771a的版本。 + +9. **查看差异**:`git diff` 显示文件的改动。 + +10. **创建标签**:`git tag <标签名>` 创建一个标签,标记重要的提交。 + +11. **合并分支**:`git merge <分支名>` 将指定分支的改动合并到当前分支。 + +### 1.4 Git分支 + +分支是代码开发的一个独立线索,允许你在不影响主项目(通常是 `main` 或 `master` 分支)的情况下进行更改。 + +每个分支都指向项目的一系列提交历史,因此可以在不同的分支上独立进行开发。 + +1. **创建分支**:`git branch <分支名>` 创建一个新分支。 +2. **切换分支**:`git checkout <分支名>` 切换到指定分支。 +3. **合并分支**:`git merge <分支名>` 将分支合并到当前分支。 +4. **删除分支**:`git branch -d <分支名>` 删除本地分支。 + +### 1.5 冲突产生 + +通常发生在合并分支或进行变更时,当两个不同的分支或提交尝试修改相同的文件或相同的文件行,Git 无法自动确定应该保留哪个更改时,就会产生冲突。 + +#### 1.5.1冲突产生的情况 + +1. **合并冲突**: + - 当尝试将两个分支合并(如使用 `git merge`)时,如果两个分支对同一文件的相同部分进行了不同的更改,Git 就会提示冲突。 + - 示例: + - `branch A` 修改了 `file.txt` 的第 10 行。 + - `branch B` 也修改了 `file.txt` 的第 10 行。 + - 合并这两个分支时,就会产生冲突。 + +2. **变基冲突**: + - 使用 `git rebase` 时,如果当前分支的提交与基底分支的提交有冲突,也会导致冲突。 + +3. **拉取冲突**: + - 当使用 `git pull` 从远程仓库拉取更改时,如果本地未提交的更改与远程仓库的更改发生冲突,也会导致冲突。 + +#### 1.5.2如何解决冲突 + +当冲突发生时,Git 会在冲突文件中标记出冲突的部分。解决冲突的基本步骤如下: + +1. **查看冲突文件**:使用 `git status` 查看哪些文件存在冲突。 + +2. **打开冲突文件**:冲突部分会标记如下: + + ```plaintext + <<<<<<< HEAD + 当前分支的内容 + ======= + 合并分支的内容 + >>>>>>> branch-name + ``` + +3. **手动解决冲突**:选择保留的内容,编辑文件,删除冲突标记。 + +4. **标记冲突已解决**: + + ```bash + git add <冲突文件> + ``` + +5. **完成合并**:执行 `git commit` 提交合并结果。 + +## 2 github 使用教程 + +### 2.1 创建远程仓库 + +1. 登录GitHub,点击页面右上角的 **New** 按钮创建新仓库。 +2. 填写仓库名称和描述,选择是否公开或私有,点击 **Create repository** 完成创建。 + +3. `git remote add` 命令用于将远程仓库添加到本地 Git 项目中。这样可以将本地的更改推送到远程仓库,或从远程仓库拉取最新的更新。 + + ```bash + git remote add <远程名称> <远程仓库URL> + ``` + + - `<远程名称>`:是为远程仓库设置的别名,通常为 `origin`。 + + - `<远程仓库URL>`:是远程仓库的地址,支持多种协议,例如 HTTPS 或 SSH。 + +### 2.2 代码推送 Push + +1. 使用 `git remote add origin <远程仓库地址>` 连接本地仓库和GitHub远程仓库。 +2. 使用 `git push origin <分支名>` 将本地分支代码推送到GitHub。 + +### 2.3 代码拉取 Pull + +在团队协作中需要获取最新代码时使用`git pull origin <分支名>`,此命令会同步远程仓库中的更新。每一次进行push之前应该执行pull,会将远程仓库的最新更改合并到本地,能提前发现冲突。在本地处理冲突比推送失败后再解决更容易,避免在团队协作中因为冲突而影响他人工作。 + +### 2.4 代码克隆 Clone + +通过 `git clone <远程仓库地址>` 下载GitHub远程仓库到本地,便于后续修改和提交。 + +### 2.5 代码提交审查(PR) + +PR 提交后,项目的其他协作者可以查看代码变更,提出改进意见或建议。 + +![屏幕截图 2024-10-26 222330](./images/pr.png) + +如图中点击之后,点击create pull request进行后序操作即可提交。 + +### 2.6 SSH免密登录 + +使用 SSH 可以免去输入用户名和密码,安全、便捷地连接到远程 Git 仓库。 + +#### 2.6.1 生成 SSH 密钥 + +如果没有 SSH 密钥,可以使用以下命令生成一对新的 SSH 密钥: + +```bash +ssh-keygen -t rsa -b 4096 -C "your_email@example.com" +``` + +- `-t rsa -b 4096`:指定加密类型和密钥长度。 +- `-C "your_email@example.com"`:用于备注邮箱(可以是 GitHub 账户的邮箱)。 + +命令运行后,按提示选择保存位置(默认是 `~/.ssh/id_rsa`)并设置一个密码短语(可选),系统会生成两个文件: +- **公钥**:`id_rsa.pub`,需要将其添加到远程仓库。 +- **私钥**:`id_rsa`,用于身份验证,请妥善保管,不要分享。 + +#### 2.6.2 将 SSH 公钥添加到远程仓库 + +1. 打开公钥文件,复制公钥内容: + ```bash + cat ~/.ssh/id_rsa.pub + ``` + +2. 前往 GitHub 或 GitLab 等代码托管平台,找到 **SSH Keys** 添加页面。 + - GitHub:前往 **Settings > SSH and GPG keys > New SSH key**。 + - GitLab:前往 **Preferences > SSH Keys**。 + +3. 在“Key”框中粘贴你的公钥内容,并保存。 + +#### 2.6.3 测试 SSH 连接 + +确保公钥已添加到远程仓库后,可以使用以下命令测试是否连接成功: + +```bash +ssh -T git@github.com +``` + +如果成功连接,将看到类似以下信息: + +![屏幕截图 2024-10-26 223557](./images/ssh.png) + +#### 2.6.4 使用 SSH 克隆仓库 + +在 SSH 设置成功后,可以通过 SSH 地址克隆仓库,无需每次输入用户名和密码: + +```bash +git clone git@github.com:/.git +``` + +#### 2.6.5 配置 Git 使用 SSH URL + +可以配置 Git 使用 SSH 而不是 HTTPS 来访问仓库,特别是在拉取和推送时: + +```bash +git remote set-url origin git@github.com:/.git +``` + diff --git "a/members/zhbbll/notes/VScode\345\256\211\350\243\205.md" "b/members/zhbbll/notes/VScode\345\256\211\350\243\205.md" new file mode 100644 index 0000000..cc6c2be --- /dev/null +++ "b/members/zhbbll/notes/VScode\345\256\211\350\243\205.md" @@ -0,0 +1,34 @@ +# VSCode 下载指南 + +**Visual Studio Code (VSCode)** 是一款流行的开源代码编辑器,广泛应用于编程和开发工作。它支持多种编程语言,具有丰富的扩展库和自定义功能,是开发者的得力工具。本文将提供从官网下载并安装 VSCode 的详细步骤。 + +## 第一步:访问 VSCode 官网 + +1. 打开浏览器,访问 [Visual Studio Code 官方网站](https://code.visualstudio.com/)。 + +2. 点击页面上的 **Download** 按钮,进入下载页面。 + + ![屏幕截图 2024-10-26 201512](./images/VScode下载.png) + +## 第二步:选择操作系统版本 + +在下载页面,可以看到不同操作系统的下载选项。VSCode 支持 **Windows**、**macOS** 和 **Linux** 操作系统: + +- **Windows**:我使用的是 Windows 系统,选择 **Windows** 下载链接。通常提供 EXE 安装文件,支持 Windows 10 及以上版本。 + +## 第三步:安装 VSCode + +下载完成后,运行安装文件并根据提示完成安装。 + +- **Windows** 用户双击 .exe 文件,按提示完成安装过程。 + +## 第四步:安装扩展插件 + +VSCode 的强大功能之一是支持扩展插件。可以在侧边栏点击扩展按钮(四方形图标)。 + +1. 简体中文语言包:对不熟悉VScode的萌新非常友好 + + ![屏幕截图 2024-10-26 202407](./images/插件.png) + +2. WSL:Windows目前自带Linux子系统,在软件商店下载Ubuntu即可使用Linux。加上这个插件可以在VScode连接Ubuntu,提高开发效率。 + diff --git "a/members/zhbbll/notes/Windows Dos \346\211\271\345\244\204\347\220\206\350\204\232\346\234\254.md" "b/members/zhbbll/notes/Windows Dos \346\211\271\345\244\204\347\220\206\350\204\232\346\234\254.md" new file mode 100644 index 0000000..47dc33f --- /dev/null +++ "b/members/zhbbll/notes/Windows Dos \346\211\271\345\244\204\347\220\206\350\204\232\346\234\254.md" @@ -0,0 +1,885 @@ +# Windows 批处理编程操作指南 + +## 1 批处理运算操作 + +### 1.1 算数运算 + +在 Windows 命令行中,我们可以使用 `set /a` 命令执行基本的算数运算。通常这些命令会在命令提示符 (CMD) 或批处理文件 (.bat) 中执行。**且CMD中大部分指令不区分大小写**。 + +#### 1.1.1 命令行模式 + +在命令行模式下使用 `set /a` 可以直接进行加减乘除等运算,注意:运算式不区分大小写。 + +```bash +set /a 1+1 +``` + +- 上述命令会计算 `1+1` 的结果并显示 `2`。 +- `set /a` 后可直接跟表达式,CMD 会自动将结果输出到屏幕。 + +#### 1.1.2 文本模式 (.bat 文件) + +在批处理 (.bat) 文件中,我们可以利用变量保存运算结果并在脚本中使用。 + +```bat +@echo off +set /a var=1+1 +echo %var% +pause +``` + +- `@echo off`:关闭命令回显,避免显示每一行命令。 +- `set /a var=1+1`:使用 `set /a` 对表达式 `1+1` 进行计算,并将结果保存到变量 `var` 中。 +- `echo %var%`:使用 `echo` 输出变量 `var` 的值。 +- `pause`:暂停执行,等待用户按下任意键继续。 + +#### 1.1.3 文本运算优先级 + +在算数运算中,运算符的优先级从高到低依次为: +1. `()`:括号优先级最高,用于改变表达式的默认优先级顺序。 +2. `*`, `/`, `%`:乘、除和取模运算,优先于加减运算。 +3. `+`, `-`:加法和减法运算,优先级最低。 + +示例: + +```bash +set /a result=(2+3)*4 +``` + +此示例将 `2+3` 括在括号内,计算结果为 `20`,因为括号内的计算优先。 + +--- + +### 1.2 重定向运算 + +重定向符号在 Windows 命令行中用于控制命令的输出和输入方向,可以将命令的输出保存到文件或附加到文件。 + +#### 1.2.1 `>` 保存输出内容到文件 + +使用 `>` 将输出内容写入到文件中。若文件已存在,会覆盖原有内容。 + +```bash +echo "hello World" > a.txt +``` + +- `echo "hello World"`:输出文本 `"hello World"`。 +- `>`:重定向符,指示将输出内容保存到文件中。 +- `a.txt`:输出文件名,若文件不存在则创建,若存在则覆盖。 + +#### 1.2.2 `type` 查看文件内容 + +`type` 命令用于显示文件的内容,常与 `>` 和 `>>` 一起使用,以便查看重定向的结果。 + +```bash +type a.txt +``` + +- 此命令将显示 `a.txt` 文件的内容,适用于快速查看文本文件。 + +#### 1.2.3 `>>` 追加内容到文件 + +`>>` 重定向符号用于将输出内容追加到文件末尾,而不覆盖文件原有内容。 + +```bash +echo "append hello world" >> a.txt +``` + +- `append hello world` 将被添加到 `a.txt` 文件的末尾。 + +--- + +### 1.3 多命令运算 + +在 Windows 命令行中,可以使用 `&&` 和 `||` 来将多条命令连接在一起。根据执行结果的不同,这些符号决定了下一条命令的执行条件。 + +#### 1.3.1 `&&` 连接命令(按顺序执行,失败停止) + +`&&` 将命令按顺序连接起来,仅在前一命令成功时执行下一条命令。如果某条命令失败,后续命令将不会执行。 + +```bash +command1 && command2 && command3 +``` + +- 示例: + + ```bash + echo "start process" && dir && echo "process completed" + ``` + + 如果 `echo "start process"` 和 `dir` 成功执行,`echo "process completed"` 将被执行;若 `dir` 失败,后续命令不会执行。 + +#### 1.3.2 `||` 连接命令(按顺序执行,成功停止) + +`||` 也可以用于连接多条命令,但与 `&&` 不同的是,若前一命令成功,则停止执行后续命令;若前一命令失败,则继续执行下一条命令。 + +```bash +command1 || command2 || command3 +``` + +- 示例: + + ```bash + dir nonexistent_folder || echo "directory not found" + ``` + + 若 `dir nonexistent_folder` 失败,`echo "directory not found"` 将被执行,提示目录未找到。 + +--- + +### 1.4 `|`管道符号 + +在 Windows 命令行中,`|`(管道符)将前一命令的输出传递给后一命令作为输入。通过管道符可以将多个命令组合起来,便于筛选和处理数据。 + +#### 1.4.1 `|` 筛选输出 + +`|` 符号用于将前一命令的输出传递给后一命令。例如,我们可以结合 `find` 命令筛选出特定信息。 + +```bash +dir | find ".txt" +``` + +- `dir`:列出当前目录的所有文件和文件夹。 +- `| find ".txt"`:筛选 `dir` 命令的输出,只显示文件名中包含 `.txt` 的内容。 + +示例应用: + +```bash +netstat -an | find "ESTABLISHED" +``` + +- `netstat -an`:显示网络连接的详细信息,其中包括连接的状态。 + +- `| find "ESTABLISHED"`:筛选 `netstat` 命令的输出,仅显示状态为 `ESTABLISHED` 的连接。 + + + +--- + +## 2 批处理基本指令 + +### 2.1 命令格式 + +在 Windows 批处理命令中,命令通常由以下结构组成: + +1. **主命令** - 主要指示执行的动作(如 `NET`、`tasklist` 等)。 +2. **子命令** - 进一步明确执行的动作(如 `user` 是 `NET` 的子命令,用于用户管理)。 +3. **参数** - 为命令提供执行时所需的输入(如用户名和密码)。 +4. **选项** - 为命令添加特定的控制和行为配置。 + +1. **主命令** - 主要指示执行的动作(如 `NET`、`tasklist` 等)。 +2. **子命令** - 进一步明确执行的动作(如 `user` 是 `NET` 的子命令,用于用户管理)。 +3. **参数** - 为命令提供执行时所需的输入(如用户名和密码)。 +4. **选项** - 为命令添加特定的控制和行为配置。 + +#### 2.1.1 `/?`查看帮助信息 + +在 CMD 中,几乎所有命令都可以通过 `/?` 或 `/help` 查看详细的用法说明: + +```bash +NET /? +``` + +上述命令会显示 `NET` 命令的详细说明和所有子命令的用途。 + +--- + +### 2.2 `%`批处理文件参数传递 + +批处理文件可以接受参数,这样可以通过传递不同的输入来重复利用同一个批处理文件。接受参数时使用 `%num` 表示,其中 `num` 是参数的序号。`%1` 表示第一个参数,`%2` 表示第二个参数,以此类推。 + +- 示例:创建用户的批处理脚本 `1.bat` + + ```bat + @echo off + echo %1 + echo %2 + net user %1 %2 /add + pause + ``` + +运行此批处理文件时,可以在命令行输入用户名和密码作为参数: + +```bash +1.bat admin 123456 +``` + +此命令将使用 `admin` 作为用户名,`123456` 作为密码,来创建一个新用户。 + +- **@echo off**:关闭命令回显,只显示输出内容。 +- **echo %1** 和 **echo %2**:显示传递的参数值。 +- **net user %1 %2 /add**:使用 `NET USER` 命令添加用户。 + +--- + +### 2.3 rem注释符 + +`rem` 是批处理文件中的注释符,注释可以帮助解释代码,以方便日后维护或他人理解。`rem` 后面的内容不会被执行,仅起到说明作用。 + +```bat +@echo off +rem 用于创建用户 +echo 用户名: %1 +echo 密码: %2 +rem 参数说明: 第一个参数是用户名,第二个参数是密码 +net user %1 %2 /add +pause +``` + +#### 注释示例说明 + +- **rem 用于创建用户**:说明代码块的作用。 +- **rem 参数说明**:提供输入参数的解释,提升代码的可读性。 + +--- + +### 2.4 美化命令提示符 + +在 Windows 命令行中,可以使用一些命令来美化提示符窗口,如设置颜色和标题。 + +#### 2.4.1 `color`颜色命令 + +`color` 命令用于设置命令提示符的前景色和背景色。颜色值可以通过两位 16 进制数指定:第一个数字表示背景色,第二个数字表示前景色。 + +```bash +color /? +``` + +可以通过上面的命令查看颜色代码列表。颜色设置示例: + +```bash +color 0A +``` + +- `0` 表示黑色背景,`A` 表示绿色前景。 + +常用颜色代码: +- 0 = 黑色 +- 1 = 蓝色 +- 2 = 绿色 +- 4 = 红色 +- 7 = 白色(默认) + +#### 2.4.2 `title`标题命令 + +`title` 命令可以更改 CMD 窗口的标题,使窗口内容更具标识性。可以为不同批处理文件添加标题,方便区分。 + +```bash +title hello +``` + +--- + +### 2.5 时间相关命令 + +在批处理文件中,`date` 和 `time` 命令分别用于获取或设置系统日期和时间。这两个命令常用在日志记录、任务调度等应用场景中。 + +#### 2.5.1 `date`日期命令 + +`date` 命令可用于显示当前系统日期。带有 `/T` 参数时,会输出当前日期但不提示更改。 + +```bash +date /T +``` + +#### 2.5.2 `time`时间命令 + +`time` 命令可用于显示当前系统时间,带有 `/T` 参数时会显示时间但不要求更改。 + +```bash +time /T +``` + +--- + +### 2.6 `start`启动命令 + +`start` 命令可用于启动其他程序或批处理文件,并可以在后台运行。带有 `/B` 参数时,`start` 会在同一窗口中运行该程序或脚本。 + +```bash +start /B 1.bat admin 123456 +``` + +--- + +### 2.7 `call`调用其他批处理文件 + +`call` 命令用于在一个批处理文件中调用另一个 .bat 文件,并可在调用时传递参数。此功能适用于模块化设计,便于分离不同的功能模块。 + +- 示例:`1.bat` 调用 `2.bat` + + ```bat + @echo off + rem 创建用户 + echo 用户名: %1 + echo 密码: %2 + net user %1 %2 /add + call 2.bat %1 + pause + ``` + + - `call 2.bat %1`:调用 `2.bat` 文件,并将用户名作为参数传递。 + +- 示例:`2.bat` + + ```bat + @echo off + net user %1 + pause + ``` + + `2.bat` 文件使用 `net user` 命令查询用户名。 + +--- + +### 2.8 `tasklist`任务列表查看 + +`tasklist` 命令显示系统中运行的所有任务或进程的信息。可以用 `/FI` 选项按条件过滤任务列表。 + +```bash +tasklist /fi "pid eq 7720" +``` + +- `/FI`:指定筛选条件,如按进程 ID (`pid`) 过滤。 +- 示例输出将显示指定 PID 的任务信息。 + +--- + +### 2.9 `taskkill`任务终止命令 + +`taskkill` 命令可用于终止任务或进程。带有 `/IM` 参数时可以按进程名终止,带有 `/PID` 参数时可按进程 ID 终止。 + +```bash +taskkill /im notepad.exe +taskkill /pid 15236 /T +``` + +- `/im`:通过进程名结束任务。 +- `/pid`:通过进程 ID 结束任务。 +- `/T`:结束指定进程及其所有子进程。 + +--- + +### 2.10 `tree`文件夹结构查看命令 + +`tree` 命令显示文件夹结构,以 ASCII 树形图的形式列出目录和文件层级。可以使用 `/A` 和 `/F` 参数进一步控制输出格式。 + +```bash +tree /A /F +``` + +- `/A`:使用 ASCII 字符显示树结构(适合跨平台显示)。 +- `/F`:显示文件夹内的所有文件。 + +--- + +### 2.11 `shutdown`关机命令 + +`shutdown` 命令用于关闭、重启或远程关机。加`/L`用于电脑关机。 + +```bash +shutdown /L +``` + +加 `/i` 参数可以打开远程关机对话框,便于管理网络中的其他计算机。 + +```bash +shutdown /i +``` + +- `/i`:打开远程关机对话框,用于网络内的远程管理。 + +--- + +### 2.12 `schtasks`计划任务命令 + +Windows 中可以使用 `schtasks` 命令创建、删除或管理计划任务,以便按预定时间自动运行程序或脚本。(注:at已弃用) + +- 示例:创建一个名为 `gaming` 的任务,每天从 12:00 到 14:00 运行 `freecell.exe`。 + + ```bash + SCHTASKS /Create /SC DAILY /TN gaming /TR c:\freecell /ST 12:00 /ET 14:00 /K + ``` + +- 删除所有计划任务: + + ```bash + SCHTASKS /Delete /TN * /F + ``` + + `/Create` 创建任务,`/Delete` 删除任务,`/SC DAILY` 设置为每天运行。 + +--- + +### 2.13 `set`批处理环境变量 + +`set` 命令用于查看和设置环境变量。在 CMD 中,可以使用 `%变量名%` 访问环境变量的值。 + +`set`可显示所有环境变量,`echo %OS%`可显示当前操作系统类型。 + + + +------ + +## 3 文件夹或文件相关命令 + +### 3.1 `dir`目录浏览命令 + +`dir` 命令用于列出当前目录下的文件和文件夹信息。 + +#### 3.1.1显示隐藏目录 + +- 显示当前目录下的所有文件和文件夹,包括隐藏文件: + +```bash +dir /A +``` + +- `/A` 参数表示显示所有文件属性,包括隐藏文件和系统文件。 + +#### 其他常用参数 + +- `/B`:简洁模式,仅显示文件名。 +- `/P`:分页显示,逐屏查看内容。 +- `/S`:递归显示子目录中的文件。 + +--- + +### 3.2 `mkdir` 和 `rmdir`创建和删除目录 + +#### 3.2.1创建目录 + +`mkdir` 命令用于创建新目录。 + +```bash +mkdir test +``` + +#### 3.2.2删除目录 + +`rmdir` 命令用于删除空目录。 + +```bash +rmdir test +``` + +- 若目录不为空,使用 `/S` 参数可删除包含文件的目录: + +```bash +rmdir /S test +``` + +- `/Q` 参数可用于静默删除,跳过确认提示。 + +--- + +### 3.3 `cd`目录切换 + +`cd` 命令用于切换当前工作目录。 + +#### 3.3.1 切换到子目录 + +```bash +cd test +``` + +#### 3.3.2 返回上级目录 + +```bash +cd .. +``` + +- 使用 `..` 表示上级目录,便于快速返回。 + +--- + +### 3.4 `ren`目录重命名 + +`ren` 命令用于重命名文件或目录。 + +#### 3.4.1重命名目录 + +```bash +ren test test1 +``` + +- 将名为 `test` 的目录重命名为 `test1`。 + +--- + +### 3.5 `copy`目录拷贝 + +#### 3.5.1 `copy` 命令用于复制文件。 + +将文件从一个目录复制到另一个目录 + +```bash +copy test2 test1 +``` + +- 上述命令将 `test2` 文件复制到 `test1`,如果 `test1` 不存在,则会被创建。 + +#### 3.5.2 删除目录 + +要删除一个目录及其所有内容,可以使用以下命令: + +```bash +rd /S /Q test2 +``` + +- `rd` 命令与 `rmdir` 命令相似,使用 `/S` 参数可删除目录及其所有文件和子目录,`/Q` 参数使其不要求确认。 + +--- + +### 3.6 文件删除:`del` + +`del` 命令用于删除指定的文件。 + +#### 示例:删除文件 + +```bash +del C:\1\1.txt +``` + +- 该命令会删除 `C:\1\` 目录下的 `1.txt` 文件。 + +--- + +### 3.7 文件剪切与移动:`move` + +`move` 命令用于移动文件或目录,可以实现重命名操作。 + +#### 3.7.1重命名文件 + +```bash +move 1.txt 2.txt +``` + +- 将 `1.txt` 文件重命名为 `2.txt`。 + +#### 3.7.2移动文件 + +将 `test1` 文件夹中的 `1.txt` 文件移动到 `test2` 文件夹,并重命名为 `2.txt`: + +```bash +move C:\test1\1.txt C:\test2\2.txt +``` + +- 该命令会将 `C:\test1\` 中的 `1.txt` 文件移动到 `C:\test2\` 并重命名为 `2.txt`。 + + + +--- + +--- + +## 4 网络相关命令 + +### 4.1 `net` 用户操作命令 + +`net` 命令用于管理网络资源和用户。 + +#### 4.1.1 查看所有用户 + +```bash +net user +``` + +- 此命令列出计算机上所有用户账户的信息,包括用户名和状态。 + +#### 4.1.2 查看特定用户信息 + +```bash +net user admin +``` + +- 查看名为 `admin` 的用户的详细信息,包括用户的全名、组、账户状态等。 + +#### 4.1.3 删除用户 + +```bash +net user admin /delete +``` + +- 删除名为 `admin` 的用户账户。 + +--- + +### 4.2 `net localgroup` 用户组操作命令 + +`net localgroup` 命令用于管理本地用户组。 + +#### 4.2.1 向本地管理员用户组添加用户 + +```bash +net localgroup administrators admin /add +``` + +- 将 `admin` 用户添加到本地管理员组,以赋予其管理员权限。 + +#### 4.2.2 从用户组中删除用户 + +```bash +net localgroup users admin /delete +``` + +- 将 `admin` 用户从本地用户组中删除。 + +--- + +### 4.3 `ping` 主机连通性检测命令 + +`ping` 命令用于测试网络连接的可达性。 + +#### 4.3.1 测试特定主机 + +```bash +ping www.baidu.com +``` + +- 此命令向 `www.baidu.com` 发送 ICMP 回显请求,以检测该主机的连通性。 + +#### 4.3.2 测试本地回环地址 + +```bash +ping -l 65500 -t 127.0.0.1 +``` + +- `-l` 参数指定数据包大小,此处设置为 65500 字节,`-t` 参数表示持续 ping 直至手动停止。 +- 该命令用于测试本地网络接口的性能。 + +--- + +### 4.4 `telnet` 网络连接命令 + +`telnet` 命令用于通过 Telnet 协议连接到远程主机。 + +#### 使用示例: + +```bash +telnet +``` + +- 例如,连接到某个服务器的 23 端口: + +```bash +telnet www.example.com 23 +``` + +- 请注意,Telnet 是一种不安全的协议,建议使用 SSH 等更安全的替代方案。 + +--- + +### 4.5 `tracert` 网络路由信息命令 + +`tracert` 命令用于追踪数据包到达目标主机所经过的路由。 + +#### 4.5.1 追踪到特定网站 + +```bash +tracert www.baidu.com +``` + +- 此命令显示从计算机到 `www.baidu.com` 的每一跳路由器的 IP 地址和响应时间。 + +--- + +### 4.6 `ipconfig` 网络适配器命令 + +`ipconfig` 命令用于显示计算机的网络适配器配置。 + +#### 查看当前 IP 配置 + +```bash +ipconfig +``` + +- 显示各网络适配器的 IP 地址、子网掩码和默认网关等信息。 + +#### 查看详细配置信息 + +```bash +ipconfig /all +``` + +- 显示所有适配器的详细配置信息,包括 MAC 地址、DHCP 状态和 DNS 服务器等。 + +--- + +### 4.7 `arp` ARP 信息命令 + +`arp` 命令用于查看和管理 ARP(地址解析协议)缓存。 + +#### 4.7.1 查看 IP 地址和 MAC 地址映射表 + +```bash +arp -a +``` + +- 显示当前计算机的 ARP 缓存,包括所有 IP 地址及其对应的 MAC 地址。 + +#### 4.7.2 添加静态 ARP 映射 + +```bash +arp -s 192.168.0.101 aa-aa-aa-aa-aa-aa +``` + +- 将 IP 地址 `192.168.0.101` 映射到指定的 MAC 地址。 + +#### 4.7.3 ARP 欺骗 + +- ARP 欺骗是一种攻击方式,攻击者通过伪造 ARP 响应包,使目标计算机将其 IP 地址与攻击者的 MAC 地址关联。这可以用于中间人攻击(MITM)等目的。 + + + +--- + +在批处理脚本中,条件判断结构是非常常用的。以下是您提到的三种条件判断结构的详细说明,包括必要的空格注意事项: + +## 5. 条件判断结构 + +### 5.1 `if else` + +```batch +@echo off + +set v=hello + +if %v%==hello (echo ok) else (echo no) + +pause +``` + +- **解释**:这个示例中,首先定义了一个变量 `v` 并赋值为 `hello`。接着,使用 `if` 语句判断 `v` 是否等于 `hello`,如果条件成立,则输出 `ok`;否则输出 `no`。注意在括号和内容之间要有适当的空格以确保正确识别。 + +### 5.2 `exist` 判断文件是否存在 + +```batch +@echo off + +if exist C:\test1\1.txt (echo ok) else (echo no) + +pause +``` + +- **解释**:这个示例使用 `if exist` 来判断文件 `C:\test1\1.txt` 是否存在。如果文件存在,则输出 `ok`,否则输出 `no`。这里的 `exist` 需要拼写为 `exist` 而不是 `exists`。 + +### 5.3 文件判断删除 + +```batch +@echo off + +if exist C:\test1\1.txt ( + echo file is found + del C:\test1\1.txt +) else ( + echo file is not found +) + +pause +``` + +- **解释**:在这个示例中,脚本判断文件 `C:\test1\1.txt` 是否存在。如果存在,首先输出 `file is found`,然后删除该文件;如果不存在,则输出 `file is not found`。同样要注意 `exist` 的拼写及空格。 + +### 注意事项 + +- **空格**:在条件语句的括号和内容之间需要保持适当的空格,否则可能导致错误的解析。 + +- **括号**:在使用多行条件判断时,确保每行的内容都在括号内并正确对齐,以避免语法错误。 + +- **文件路径**:确保提供的文件路径正确,且程序有权限访问这些路径。 + + + +------ + +## 6. 循环结构 + +### 6.1 遍历目录 + +```batch +@echo off + +rem 删除名为 test1 的目录 +for /d %%a in (*) do if %%a==test1 rd %%a + +rem 遍历当前目录下的所有目录并输出 +for /d %%a in (*) do echo %%a + +pause +``` + +- **解释**:第一个 `for` 循环遍历当前目录下的所有子目录,并检查是否名为 `test1`,如果是,则使用 `rd` 命令删除该目录。第二个 `for` 循环输出当前目录下的所有子目录。 + +### 6.2 `/R` 遍历删除 + +```batch +@echo off + +rem 遍历 C:\test1 目录及其子目录下所有的 .py 文件并输出其路径 +for /r "C:\test1" %%v in (*.py) do echo %%v + +rem 删除遍历到的所有 .py 文件 +rem delete +for /r "C:\test1" %%v in (*.py) do del %%v + +pause +``` + +- **解释**:第一个 `for` 循环遍历 `C:\test1` 目录及其所有子目录下的 `.py` 文件并输出文件路径。第二个循环同样遍历并删除所有找到的 `.py` 文件。请在实际执行删除操作时小心,以免误删重要文件。 + +### 6.3 `/L` 遍历数字(自动化 ping 命令) + +`1.bat` 文件内容如下: + +```batch +@echo off + +rem 遍历 1 到 20 的数字 +for /l %%v in (1,1,20) do echo %1.%%v + +pause +``` + +- **解释**:此批处理文件使用 `for /L` 循环从 1 遍历到 20。`%1` 是调用该脚本时传入的第一个参数(如 `192.168.0`),结合当前数字形成完整的 IP 地址(如 `192.168.0.1` 到 `192.168.0.20`)。在命令行中调用此脚本的示例为:`1.bat 192.168.0`。 + +### 6.4 `/F` 遍历文件内容 + +```batch +@echo off + +rem 遍历 1.bat 文件的每一行并输出 +for /f %%v in (1.bat) do echo %%v + +pause +``` + +- **解释**:此脚本使用 `for /f` 循环读取 `1.bat` 文件的每一行,并将每一行的内容输出到屏幕。`%%v` 在此处代表当前读取的行内容。 + +------ + +## 7 virus脚本分析 + +### 7.1 loop 目录重复新建 + +```bash +@echo off + +cd C:\test1 + +:loop + +md virus + +cd virus + +goto loop + +pause + +exit +``` + +- **解释** :该脚本在 `C:\test1` 目录下创建一个名为 "virus" 的无限循环目录。 + + + diff --git a/members/zhbbll/notes/images/Screenshot_2024-10-26-20-46-47-49_149003a2d400f6a.jpg b/members/zhbbll/notes/images/Screenshot_2024-10-26-20-46-47-49_149003a2d400f6a.jpg new file mode 100644 index 0000000..3c3fb01 Binary files /dev/null and b/members/zhbbll/notes/images/Screenshot_2024-10-26-20-46-47-49_149003a2d400f6a.jpg differ diff --git "a/members/zhbbll/notes/images/VScode\344\270\213\350\275\275.png" "b/members/zhbbll/notes/images/VScode\344\270\213\350\275\275.png" new file mode 100644 index 0000000..c452c87 Binary files /dev/null and "b/members/zhbbll/notes/images/VScode\344\270\213\350\275\275.png" differ diff --git a/members/zhbbll/notes/images/commit.png b/members/zhbbll/notes/images/commit.png new file mode 100644 index 0000000..c095996 Binary files /dev/null and b/members/zhbbll/notes/images/commit.png differ diff --git a/members/zhbbll/notes/images/pr.png b/members/zhbbll/notes/images/pr.png new file mode 100644 index 0000000..f72d1b4 Binary files /dev/null and b/members/zhbbll/notes/images/pr.png differ diff --git a/members/zhbbll/notes/images/push.png b/members/zhbbll/notes/images/push.png new file mode 100644 index 0000000..3a3c092 Binary files /dev/null and b/members/zhbbll/notes/images/push.png differ diff --git a/members/zhbbll/notes/images/reflog.png b/members/zhbbll/notes/images/reflog.png new file mode 100644 index 0000000..8774687 Binary files /dev/null and b/members/zhbbll/notes/images/reflog.png differ diff --git a/members/zhbbll/notes/images/reset.png b/members/zhbbll/notes/images/reset.png new file mode 100644 index 0000000..d6d8aa9 Binary files /dev/null and b/members/zhbbll/notes/images/reset.png differ diff --git a/members/zhbbll/notes/images/ssh.png b/members/zhbbll/notes/images/ssh.png new file mode 100644 index 0000000..afeb2ee Binary files /dev/null and b/members/zhbbll/notes/images/ssh.png differ diff --git a/members/zhbbll/notes/images/status.png b/members/zhbbll/notes/images/status.png new file mode 100644 index 0000000..2acd655 Binary files /dev/null and b/members/zhbbll/notes/images/status.png differ diff --git "a/members/zhbbll/notes/images/\346\217\222\344\273\266.png" "b/members/zhbbll/notes/images/\346\217\222\344\273\266.png" new file mode 100644 index 0000000..8b3efd3 Binary files /dev/null and "b/members/zhbbll/notes/images/\346\217\222\344\273\266.png" differ