BatShell

2019-06-09-BatShell

Windows bat 脚本

批处理文件,在DOS和Windows(任意)系统中,.bat文件是可执行文件,由一系列命令构成,其中可以包含对其他程序的调用。 BATSHELL参考

语法:

  • echo: 显示信息,或将命令回显打开或关上

    • echo [on | off]
    • echo [message]
  • @: 表示不显示@后面的命令

    • 标签必须单独一行,并且以冒号打头。
    • 如果命令扩展被启用,GOTO 会如下改变
  • goto: goto label, 无条件跳转

    • label 指定批处理程序中用作标签的文字字符串
      1
      2
      goto end
      :end
  • rem: 在批处理文件或 CONFIG.SYS 里加上注解或说明

    • rem [comment]
    • :: [commnet]
  • title: 设置窗口标题

    • title [string]
  • pause:暂停批处理程序,并显示以下消息:

    • 请按任意键继续. . .
  • call:call [drive:][path]filename [batch-parameters]

    1
    2
    3
    4
    5
    6
    7
    8
    @echo off
    call :an Hello 世界!
    :an
    echo %1
    echo %2
    pause>null

    输出为: Hello 世界!

  • if:执行批处理程序中的条件处理

    1
    2
    3
    IF [NOT] ERRORLEVEL number command  
    IF [NOT] string1==string2 command
    IF [NOT] EXIST filename command

  • for:对一组文件中的每一个文件执行某个特定命令

    1
    for %variable in (set) DO command [command-parameters]

    • 在批处理程序中使用 for 命令时, 指定变量请使用 %%variable而不要用 %variable, 变量名称是区分大小写的,所以 %i不同于 %I
  • set:显示、设置或删除 cmd.exe 环境变量

    1
    2
    3
    4
    5
    set [variable=[string]]  
    variable # 指定环境变量名
    string # 指定要指派给变量的一系列字符串
    SET /A expression
    SET /P variable=[promptString]

  • del:删除一个或数个文件

    1
    DEL [/P] [/F] [/S] [/Q] [/A[[:]attributes]] names

参数:

  • 批脚本里的 %* 指出所有的参数(如 %1 %2 %3 %4 %5 ...)

  • 批参数(%n)的替代已被增强:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    %~1         - 删除引号("),扩展 %1
    %~f1 - 将 %1 扩展到一个完全合格的路径名
    %~d1 - 仅将 %1 扩展到一个驱动器号
    %~p1 - 仅将 %1 扩展到一个路径
    %~n1 - 仅将 %1 扩展到一个文件名
    %~x1 - 仅将 %1 扩展到一个文件扩展名
    %~s1 - 扩展的路径只含有短名
    %~a1 - 将 %1 扩展到文件属性
    %~t1 - 将 %1 扩展到文件的日期/时间
    %~z1 - 将 %1 扩展到文件的大小
    %~$PATH:1 - 查找列在 PATH 环境变量的目录,并将 %1
    扩展到找到的第一个完全合格的名称。如果
    环境变量名未被定义,或者没有找到文件,
    此修改符会扩展到空字符串

  • 可以组合修改符来取得多重结果(d-Drive,p-Path):

    1
    2
    3
    4
    5
    %~dp0       - 获取当前路径
    %~dp1 - 只将 %1 扩展到驱动器号和路径
    %~nx1 - 只将 %1 扩展到文件名和扩展名
    %~dp$PATH:1 - 在列在 PATH 环境变量中的目录里查找 %1,并扩展到找到的第一个文件的驱动器号和路径。
    %~ftza1 - 将 %1 扩展到类似 DIR 的输出行

  • %源字符串:~起始值,截取长度% (起始值从0开始;截取长度是可选的,如果省略逗号和截取长度,将会从起始值截取到结尾;

WSL

介绍WSL

Windows Subsystem for Linux (WSL) 是一个在 Windows 上运行 Linux 应用程序的子系统。

WSL安装

  1. 打开 PowerShell,输入 wsl --install
  2. 验证: wsl -v

WSL 安装 Ubuntu

1
2
3
4
5
6
wsl --list --online # 查看可用的 Linux 发行版
wsl --install -d Ubuntu # 安装 Ubuntu

# 空间占用:刚安装时很小,约 2GB - 4GB。但随着您在 Linux 中安装软件、存放数据,它会自动扩容,可能会占用几十 GB。
# 默认盘符:默认存放在 C 盘。
# 具体路径:它作为一个虚拟硬盘文件(ext4.vhdx)存放在 C 盘的用户应用数据文件夹中:C:\Users\您的用户名\AppData\Local\Packages\...\LocalState\ext4.vhdx

WSL 卸载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
wsl -l -v # 查看已安装的 Linux 发行版
wsl --unregister <发行版名称> # 卸载指定的 Linux 发行版

# 卸载 WSL 相关的应用软件
1. 打开 Windows 「设置」 -> 「应用」 -> 「安装的应用」(或「应用和功能」)。
2. 在搜索框中搜索 WSL 和您安装的系统名称。
3. 依次点击右侧的三个点,选择 「卸载」 以下组件:
- Windows Subsystem for Linux(Windows 适用于 Linux 的子系统)
- Windows Subsystem for Linux Update
- Ubuntu(或您安装的其他系统,如 Debian, Kali 等)

# 关闭 Windows 底层虚拟化功能(可选)
# 如果以后完全不再使用 WSL 和任何虚拟机,可以关闭系统底层功能:
1. 在 Windows 搜索框输入 「打开或关闭 Windows 功能」 并打开。
2. 取消勾选以下两个选项:
- 适用于 Linux 的 Windows 子系统
- 虚拟机平台
- 点击「确定」,并根据提示重启电脑。

WSL 彻底卸载与注销

1
2
3
wsl --unregister Ubuntu # 秒删该 Linux 系统并立即释放其占用的全部 C 盘空间

# 打开 Windows 的 「设置」->「应用」->「安装的应用」,在列表中找到 Ubuntu,点击右侧的三个点选择 「卸载」 即可

WSL 迁移

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 已安装
mkdir D:\WSL\Ubuntu
wsl --export Ubuntu D:\WSL\Ubuntu.tar # 将现有的系统打包备份到 D 盘
wsl --unregister Ubuntu # 注销 C 盘的旧系统
wsl --import Ubuntu D:\WSL\Ubuntu D:\WSL\Ubuntu.tar --version 2 # 将备份的系统导入到 D 盘的新文件夹中,重新注册
Ubuntu config --default-user 您的用户名 # 设置默认用户

# 未安装子系统
wsl --list --online # 查看可用的发行版列表

# 不从微软商店装,直接下载tar包:去 https://learn.microsoft.com/zh-cn/windows/wsl/install-manual 下载对应发行版的 .appx 文件。
# 将下载好的 .appx 文件的后缀名直接重命名为 .zip, 解压这个 .zip 文件,在解压出来的文件夹里,找到一个名为 install.tar.gz

mkdir D:\WSL\Ubuntu # 创建 D 盘的新文件夹
wsl --import <你给系统起的名字> E:\WSL\Ubuntu E:\WSL\install.tar.gz
adduser myuser # PowerShell 中输入 wsl 进入系统
usermod -aG sudo myuser # 添加用户到 sudo 组
Ubuntu config --default-user myuser # 设置默认用户为 myuser

BatShell
https://anyue967.github.io/posts/8ef1acd.html
作者
anyu967
发布于
2019年6月9日
许可协议