Windows 批处理脚本 变量加减乘除运算

@echo off
set /a a=1,b=2
set /a result=%a%+%b%
echo 加法运算:%a%+%b%=%result%
pause > nul 

/a 表示进行赋值运算
%a%+%b% 两个变量相加

@echo off

rem 减法
set /a a=24,b=4
set /a result=%a%-%b%

rem 乘法
set /a a=2,b=3
set /a result=%a%*%b%

rem 除法
set /a a=24,b=4
set /a result=%a%/%b%

pause > nul 

rem 是注释行

VBS 内置字符串操作函数

VBScript 提供了丰富的内置字符串操作函数,可以高效处理各种文本操作需求。

Split(expression, delimiter, count, compare)

返回基于 0 的一维数组,其中包含指定数目的子字符串。

  • expression:必选。字符串表达式,包含子字符串和分隔符。如果 expression 为零长度字符串,Split 返回空数组,即不包含元素和数据的数组。
  • delimiter:可选。用于标识子字符串界限的字符。如果省略,使用空格 (" “) 作为分隔符。如果 delimiter 为零长度字符串,则返回包含整个 expression 字符串的单元素数组。
  • count:可选。被返回的子字符串数目,-1 指示返回所有子字符串。
  • compare:可选。compare 参数可以有以下值:0 执行二进制比较;1 执行文本比较;2 执行基于数据库(在此数据库中执行比较)中包含的信息的比较。

Replace(expression, find, replacewith, compare, count, start)

ffmpeg 按时间切分割视频

ffmpeg -i input.mp4 -ss start_time -to end_time -c copy output.mp4

start_time 是要开始切分的时间戳,以秒为单位。
end_time 是要结束切分的时间戳,以秒为单位。
-c copy 选项指示 ffmpeg 复制输入视频的音视频流,而不会重新编码它们。这将使输出文件更小,并且质量不会损失。

vbs 打开『选择文件夹』对话框

打开 『选择文件夹』对话框,支持指定默认路径

Function SelectFolder( myStartFolder )
	' Version: 0.1.0
	' Updated: 2021-08-07
	
    ' Standard housekeeping
    Dim objFolder, objItem, objShell
    
    ' Custom error handling
    On Error Resume Next
    SelectFolder = ""

    ' Create a dialog object
    Set objShell  = CreateObject( "Shell.Application" )
    Set objFolder = objShell.BrowseForFolder( 0, "Ñ¡ÔñÎļþ¼Ð", 0, myStartFolder )

    ' Return the path of the selected folder
    If IsObject( objfolder ) Then SelectFolder = objFolder.Self.Path

    ' Standard housekeeping
    Set objFolder = Nothing
    Set objshell  = Nothing
    On Error Goto 0
End Function

msgbox SelectFolder("C:\Windows\Desktop")

vbs 解析文件路径(文件名、扩展名、路径)

将传入的文件路径分割为路径、文件名、扩展名三部分。

dim example
example="c:\windows\a.txt"

Function get_file_parts(in_file)
 ' Version: 0.1.0
 ' Updated: 2021-08-07
 
 dim input_path,input_filename, ext_name, left_part_name

 input_path=Left(in_file, InStrRev(in_file,"\") - 1)
 input_filename=Right(in_file,Len(in_file)-InStrRev(in_file,"\"))
 ' msgbox input_path
 ' msgbox input_filename
 left_part_name=Left(input_filename, InStrRev(input_filename,".") - 1)
 ext_name=Right(input_filename,Len(input_filename)-InStrRev(input_filename,".")+1)

 get_file_parts=input_path & "," & left_part_name & "," & ext_name

End Function

msgbox get_file_parts(example)
' c:\windows
' a
' .txt

ffmpeg filter_complex 复杂多滤镜叠加

使用选项 -filter_complex

滤镜语法:
filtername=option1=value1:option2=value2:option3=value3...

完整命令语法:
ffmpeg -i 输入0 -i 输入1 -i 输入N -filter_complex "多滤镜组合表达式" output.mp4

其中多滤镜组合表达式语法思路是:[输入]滤镜[输出];[输入]滤镜[输出];

Github 下载文件夹(子目录)

有时候只是需要 Git 仓库里某个子文件夹里的源代码文件,并不想克隆整个仓库(可能整个仓库比较大)。例如只想下载某个课程系列里第一课的源代码案例 ch01。

原理:
1,SVN 基于文件方式存储(而Git却是基于元数据方式分布式存储文件信息的)
2,GitHub 支持 SVN 客户端

NVM 常用命令详解

先安装 NVM:nvm 的安装

本文详细介绍 NVM 的常用命令和使用技巧。

nvm --version          # 查看 nvm 版本
nvm --help            # 查看帮助信息
nvm ls                # 查看已安装的 Node.js 版本
nvm ls-remote         # 查看所有可用的 Node.js 版本
nvm ls-remote --lts   # 查看所有 LTS 版本
nvm ls-remote 18      # 查看指定主版本号的所有版本
nvm current           # 查看当前使用的 Node.js 版本
nvm which current     # 显示当前 Node.js 可执行文件路径
nvm which 18.17.0     # 显示指定版本的可执行文件路径
nvm install 18.17.0   # 安装指定版本
nvm install node      # 安装最新版本
nvm install --lts     # 安装最新的 LTS 版本
nvm install 'lts/*'   # 安装最新的 LTS 版本(另一种写法)
nvm install 18        # 安装最新的 18.x 版本
nvm install 16        # 安装最新的 16.x 版本
nvm install -s 18.17.0    # 从源码编译安装(适用于二进制包不兼容的情况)
nvm use 18.17.0       # 切换到指定版本
nvm use node          # 切换到最新版本
nvm use --lts         # 切换到最新的 LTS 版本
nvm use 18            # 切换到已安装的最新 18.x 版本
nvm exec 18.17.0 node --version    # 在指定版本下执行命令
nvm run 18.17.0 app.js             # 使用指定版本运行脚本
nvm alias default 18.17.0    # 设置默认版本
nvm alias default node       # 设置最新版本为默认
nvm alias default --lts      # 设置最新 LTS 版本为默认
nvm alias                     # 列出所有别名
nvm alias stable 18.17.0     # 创建别名
nvm unalias stable            # 删除别名
nvm uninstall 16.20.0        # 卸载指定版本
nvm uninstall --lts          # 卸载当前 LTS 版本

在项目根目录创建 .nvmrc 文件,指定项目使用的 Node.js 版本: