常用的代码示例
Talk is cheap, show me code!
主要记录数据java端与c++端的数据交互
c++端调试接口
1 | // log.h |
Java示例类
1 | package com.dasea.jni; |
Java Native接口类
1 | package com.dasea.jni; |
对应接口c++ 端的实现
具体请看github代码
代码仓库
Talk is cheap, show me code!
主要记录数据java端与c++端的数据交互
1 | // log.h |
1 | package com.dasea.jni; |
1 | package com.dasea.jni; |
具体请看github代码
代码仓库
1 | // 主要用于测试Direct Buffer |
1 | unsigned char* g_directBuff = NULL; |
Java_[包名]_[类名]_[方法名]
的形式对应1 | #ifndef __DYNAMIC_JNIDEMO_H__ |
1 | #include "dynamic_jnidemo.h" |
if "string1" == "string2" command 语句
例子:
1 | @echo off |
if 数值1 equ 数值2 command 语句
其他关系符号:
中文含义 | 关系符 | 英文解释 |
---|---|---|
等于 | equ | equal |
大于 | gtr | greater than |
大于或等于 | geq | greater than or equal |
小于 | lss | less than |
小于或等于 | leq | less than or equal |
不等于 | neq | no equal |
例子:
1 | set /p num1=请输入数字: |
if [not] exist filename command
例子:
1 | if exist "e:" (echo e盘存在) else echo e盘不存在 |
if defined 变量 command 语句
例子:
1 | if defined a (echo 变量a已定义) else echo 变量a没被定义 |
if errorlevel语句特点:
if errorlevel 0 cmmand
, 含义是:如果返回的错误码值大于或等于0的时,将执行cmmand操作if %errorlevel%==0 cmmand
,含义是:如果返回的错误码值等于0的时候,将执行cmmand操作例子:
1 | net user |
attrib 显示和更改文件属性
del 删除文件
copy 复制文件, 而不能复制文件夹
xcopy 复制文件夹
md 创建文件夹, 创建单个文件夹
rd 删除空目录(目录中不能有子目录和文件)
ren 重命名文件夹
move 移动文件夹, 重命名文件夹
find 字符串查找
findstr 字符串查找增强
ping 测试ip连接
ipconfig 查看ip配置
arp 显示和修改”地址解析协议(arp)”缓存中的项目
start 开启命令
shutdown 关闭和重启计算机
taskkill 关闭指定进程
>
传递且覆盖>>
将结果追加到指定的设备1 | 1, 在cmd环境中,有些字符具备特殊功能,如 >、>>表示重定向,| 表示管道,&、&&、|| 表示语句连接……它 |
1 | @echo off |
1 | @echo off |
" "
来将路径括起来1 | cd /d cd "d:\program files\^%*abc" |
基本要素:
例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31for %%i in (bbs.bathome.cn) do (
echo %%i
)
for %%i in (bbs,bathome,cn) do (
echo %%i
)
set str=c d e f g h i j k l m n o p q r s t u v w x y z
echo 当前硬盘的分区有:
for %%i in (%str%) do if exist %%i: echo %%i:
echo ====列出所有文件====
for %%i in (*.*) do (
echo "%%i"
)
echo ====列出txt类型的文件====
for %%i in (*.txt) do (
echo "%%i"
)
echo ====列出文件名只有3个字符的bat文件====
for %%i in (???.bat) do (
echo "%%i"
)
echo ====循环建立三个空文件====
for %%i in (1,2,3) do (
type nul>test%%i.txt
)
例子:1
2
3
4
5rem 每次读取文本的一行数据
for /f %%i in (test1.txt) do (
echo ===========
echo %%i
)
例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19echo -----------------------------------------
:: 如果没有用delims, 默认会以空格或者tab键为分割符
for /f %%i in (test1.txt) do (
echo ===========
echo %%i
)
echo -----------------------------------------
:: 这里以逗号为分割符
for /f "delims=," %%i in (test1.txt) do (
echo ===========
echo %%i
)
echo -----------------------------------------
:: 这里以点号和逗号为分割符, 截取前面的内容
for /f "delims=.," %%i in (test1.txt) do (
echo ===========
echo %%i
)
辅助delims, 用于提取具体的一段
例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21:: 默认是以空格为分割符
for /f "tokens=1-3" %%i in (test2.txt) do (
echo %%i
echo %%j
echo %%k
)
echo -----------------------------------------------
for /f "delims=, tokens=2-5" %%i in (test3.txt) do (
echo %%i
echo %%j
echo %%k
echo %%l
)
echo -----------------------------------------------
for /f "delims=, tokens=2,3-5" %%i in (test3.txt) do (
echo %%i
echo %%j
echo %%k
echo %%l
)
跳过n行, 从n+1行开始
例子:1
for /f "skip=2" %%i in (test3.txt) do echo %%i
例子:1
2
3
4
5
6
7echo -----------------------------------------------
:: 忽略以;开头的行
for /f "eol=;" %%i in (test4.txt) do echo %%i
echo -----------------------------------------------
:: eol后面只能指定一个字符
for /f "eol=," %%i in (test4.txt) do echo %%i
命令语句
) do (……)例子:1
2
3echo -----------------------------------------------
:: 先找到文件,在逐个输出
for /f %%i in ('dir /a-d /b test*.txt') do echo %%i
当路径中包含特殊字符时,需要使用usebackq, 它是一个增强型参数, 使用后, command1需要变动如下:
例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21@echo off
echo ------------------------------------------------
:: 找不到文件
for /f %%i in (test .txt) do echo %%i
:: 当成字符串处理
for /f %%i in ("test .txt") do echo %%i
:: 错误
for /f %%i in ('test .txt') do echo %%i
:: 找不到文件
for /f %%i in (`test .txt`) do echo %%i
echo ------------------------------------------------
:: for /f "delims==" %%i in ('set') do echo %%i
echo ------------------------------------------------
:: 使用usebakq时候需要将(command1)的单引号改为 反引号 `(1旁边的)
:: for /f "usebackq delims==" %%i in (`set`) do echo %%i
echo ------------------------------------------------
for /f "usebackq" %%i in ("test .txt") do echo %%i
pause
下面是些已经被底层定义好可以直接使用的变量:不会出现在 SET 显示的变量列表中
假设文件为C:\Documents and Settings\jinsun\桌面\ParseSinglePkgs.bat
他们的值由系统将其根据事先定义的条件自动赋值,我们只需要调用而已
set [vaiable=[string]]
例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14:: 设置的时候等号俩边不能有空格
set var=abcd
echo var的值为%var%
:: 清除变量,使其成为未定义状态
set var=
if defined var (echo var的值为%var%) else echo var没有赋值
set var1=""
if defined var1 (echo var1的值为%var1%) else echo var1没有赋值
:: set还可以提供一个交互界面,让用户自己输入变量的值,
:: 然后我们在来根据这个值来做相应操作,只需要加一个"/P"参数就可以了!
set /p var2=请输入变
字符串替换%PATH:STR1=STR2%
: 将字符串变量%PATH%中的str1替换为str2
例子:
1 | set a= bbs. bathome.cn |
字符串截取%a:~[m[,n]]%
: ~偏移, m为偏移量(从0开始), n为截取长度
例子:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21set a=www.github.com
echo 源字符串为: %a%
set var=%a:~3,5%
echo 截取的一点: %var%
:: 倒数从-1开始
:: 从第一个到倒数第三个之前的(ww.github.)
set var3=%a:~1,-3%
echo %var3%
:: 倒数第三个之后的(com)
set var4=%a:~-3%
echo %var4%
:: 从倒数第三个开始取俩个字符(co)
set var1=%a:~-3,2%
echo %var1%
::从第三个开始到结束(.github.com)
set var2=%a:~3%
echo %var2%
1 | @echo off |
set /a expression
1 | ( ) 分组 |
1 | set /a var= 1 " " 1 异运算 |
类似于ctags, 为代码添加标签, 但是对于c++, c语言, 更精确.
1 | :: windows |
1 | > gtags |
1 | > gtags --dump GPATH |
1 | > gtags --single-update filename |
1 | # 查找函数 |