bat 扩展名为bat或cmt的文本文件内容按照重复次数由高到低进行排序?


首页关键词htt
Gnirehtet 该项目通过 adb 为 Android 设备提供 reverse tethering(反向网络连接),允许设备在插入计算机后,使用计算机的网络而不用消耗自身的流量。适用于 GNU / Linux、Windows 和 Mac OS,无需任何 root 权限。 Gnirehtet 目前有两种实现可用: 一个是 Java; 另一个是 Rust。 Java
版本的好处是,相同的“二进制”运行在安装了 Java 8 运行时的各个平台上。Rust 版本的优势是,二进制文件占用较少的 CPU 和内存,并且不需...
你要找的是不是: Gnirehtet首页 Gnirehtet文档 Gnirehtet官方下载 Gnirehtet极速下载加载中加载中{{o.href}}
{{o.content
formatHtml}}
聚合全网技术文章,根据你的阅读喜好进行个性推荐
OSC小程序
顶部

前言:
neo4j 这个东西在国内用的很少,目前能百度的资料也是很早之前的几篇了,我针对neo4j 3.5 的版本进行一次学习和记录,以及实际的工作需求我也遇到了,后续会开源一个剔除业务的开源项目,有兴趣的读者可以了解一下图数据库的中间件,还是蛮有意思的。
它是什么?
它的历史
1.0版于2010年2月发布。
Neo4j 2.0版于2013年12月发布。
Neo4j 3.0版于2016年4月发布。
2016年11月,Neo4j成功获得了由Greenbridge Partners Ltd.牵头的3600万美元D轮融资[15]
2018年11月,Neo4j成功获得了由One Peak Partners和Morgan Stanley Expansion Capital牵头的8000万美元E轮融资,其他投资者包括Creandum,Eight Roads和Greenbridge Partners参与了此次融资
应用场景
https://zhuanlan.zhihu.com/p/... 知乎介绍neo4j
https://juejin.im/post/5b5599... 掘金文章
同类产品比较
https://blog.csdn.net/belalds... 主流图数据库Neo4J、ArangoDB、OrientDB综合对比:架构分析
https://www.ljjyy.com/archive... 在实际的项目选型中使用
为什么学习它
公司业务需求,需要使用可视化拓扑图展示数据
标签库使用mysql展示图形结构比较困难,转而使用图数据库解决
为什么要使用neo4j
https://www.cnblogs.com/rubin... 参考
https://zhidao.baidu.com/ques... 百度知道
哪些人不喜欢它
neo4j 属于老牌图数据库
neo4j 不支持分片,对分布式的系统支持不是很好,推荐单机部署
我要怎么做(按优先级从高到低排序)
看文档:
自己写 Demo
后续会将个人实验内容上传到github
参考别人 Demo
参考地址:https://github.com/IsFive/neo... git 地址
后面根据该项目进行二次开发,目前已上线正式环境。
项目场景模拟
让业务去推动技术
明确需求
遇到问题
科学上网到国外使用谷歌进行搜索,目前国内使用较少
查看csdn 博客,有部分问题的解决办法
关于关系型数据库 与 neo4j数据库的数据同步问题
Neo4j 与 vis 的使用问题
如何安装neo4j社区版本(免费)(windows - 10)
1. 进入官网,下载软件
https://neo4j.com/graph-algor...
点击右上角:
点击下载:
进入到如下页面
输入对应信息,选择下载
PS: 外网软件的下载真的慢的想死,这里提供一个诀窍
进入到如下页面,右击蓝色连接
复制连接地址
在迅雷里面,新建任务,然后粘贴地址进去
迅雷会找到资源然后提示你下载
下载,不出意外飞速下好软件包
(本迅雷为破解版,个人自己使用,不对外开放)
线上的版本使用 版本为3.5.12 ,官方最新版已经有了4.0的版本了
这里我也提供了安装包,自己下的话需要翻墙加迅雷下才有可能拉下来
Windows:
链接:https://pan.baidu.com/s/1yWkI...提取码:3c21
Linux:
链接:https://pan.baidu.com/s/1ljzS...提取码:bnrf
2. 安装JDK
这个请自行百度,教程烂大街,不过注意安装 JDK1.8 版本以上,否则是无法使用的
3. 配置Neo4j环境变量
将下好的包解压到对应的位置之后,我们可以配置环境变量
环境变量如下
NEO4J_HOME
D:\zxd\tool\neo4j-community-3.5.12-windows\neo4j-community-3.5.12
4. neo4j 启动
管理员模式打开CMD, cd 到 D:\zxd\tool\neo4j-community-3.5.12-windows\neo4j-community-3.5.12\bin 下面(记得切换盘符)
请查看下面的常用命令,根据自己的实际情况选择
# 启动服务
neo4j(.bat) start
# 重启服务
neo4j(.bat) restart
# 停止服务
neo4j(.bat) stop
# 控制台模式启动
neo4j(.bat) console
开启neo4j,看到 类似successful的字样就代表运行成功了
进入到 http://localhost:7474/browser/
进入主页面,neo4j安装成功
5. 安装有可能的问题
此部分是针对(4) 有可能失败的情况下进行尝试:
常见问题1
输入如下的命令,安装neo4j 的服务
# 安装neo4j 服务
neo4j install-service
# 卸载neo4j 服务
neo4j uninstall-service
常见问题2:
这种情况可能是你安装服务的时候,neo4j默认已经给你启动了,尝试访问 http://localhost:7474 看下能不能访问,如果可以访问,证明没有出现问题
如果依然没有解决,请尝试 neo4j.bat stop 先关闭服务,或者重新安装一遍neo4j的服务
常见问题3:
下面这个问题是一个比较奇怪的问题,我之前在上线部署的时候遇到过一次
解决办法:https://blog.csdn.net/togethe...
修改bin下面,有一个文件:neo4j.ps1
需要把前缀的 $PSSCRIPT 改为你的安装路径,然后执行neo4j 的命令就不会报错了
6. neo4j 实现外网访问:
在conf 里面的 neo4j.conf 中修改:
#dbms.connectors.default_listen_address=0.0.0.0
7. Neo4j 部分配置参数详解:
在conf/neo4j.config中有对应的内容:
其他配置项目从网上摘抄部分
修改相应配置如下:
# 修改第22行load csv时l路径,在前面加个#,可从任意路径读取文件
#dbms.directories.import=import
# 修改35行和36行,设置JVM初始堆内存和JVM最大堆内存
# 生产环境给的JVM最大堆内存越大越好,但是要小于机器的物理内存
dbms.memory.heap.initial_size=5g
dbms.memory.heap.max_size=10g
# 修改46行,可以认为这个是缓存,如果机器配置高,这个越大越好
dbms.memory.pagecache.size=10g
# 修改54行,去掉改行的#,可以远程通过ip访问neo4j数据库
dbms.connectors.default_listen_address=0.0.0.0
# 默认 bolt端口是7687,http端口是7474,https关口是7473,不修改下面3项也可以
# 修改71行,去掉#,设置http端口为7687,端口可以自定义,只要不和其他端口冲突就行
#dbms.connector.bolt.listen_address=:7687
# 修改75行,去掉#,设置http端口为7474,端口可以自定义,只要不和其他端口冲突就行
dbms.connector.http.listen_address=:7474
# 修改79行,去掉#,设置http端口为7473,端口可以自定义,只要不和其他端口冲突就行
dbms.connector.https.listen_address=:7473
# 修改227行,去掉#,允许从远程url来load csv
dbms.security.allow_csv_import_from_file_urls=true
# 修改246行,允许使用neo4j-shell,类似于mysql 命令行之类的
dbms.shell.enabled=true
# 修改235行,去掉#,设置连接neo4j-shell的端口,一般都是localhost或者127.0.0.1,这样安全,其他地址的话,一般使用https就行
dbms.shell.host=127.0.0.1
# 修改250行,去掉#,设置neo4j-shell端口,端口可以自定义,只要不和其他端口冲突就行
dbms.shell.port=1337
# 修改254行,设置neo4j可读可写
dbms.read_only=false
8. 修改neo4j可视化界面的超管用户密码]
在控制台输入:server change-password 进行修改
键入原密码及新密码,即可修改
注意冒号
9 . window版本的其他安装方式:
neo4j 在window平台有一个desktop 版本,实现了多实例创建图数据库的应用,有需要可以直接安装,个人直接下载window的Bin包进行单机的部署。
如何安装neo4j社区版本(免费)(linux - CenterOs7)
重复的内容请查看window安装方式,linux 的安装相对更加简单一些。
(1)准备**neo4j-community-3.5.12-unix.tar.gz.gz** ,使用目前最新的版本
Linux:
链接:https://pan.baidu.com/s/1ljzS...提取码:bnrf
(2)解压放入到linux相应位置
(3)确保当前环境变量存在JDK,版本不能低于JDK1.8
(4)同样由于安全配置的原因,需要进入客户端配置一次用户名和密码,因为linux没有GUI,在neo4j.conf需要开启远程访问:
dbms.connectors.default_listen_address=0.0.0.0
把#拿掉就可以进行远程访问了
(5)请参考window对于用户名和密码进行自定义
(6)如果忘记了GUI页面的用户名和密码,可以使用删除db的方式对于图数据库进行重置
总结:
介绍了Neo4J的基本理念,已经我为什么要使用到neo4j 这个库
Neo4j在linux上和windows上的安装,注意如果要用到项目上,请注意使用开源的社区版,企业版提供更多的功能以及更好性能,同时官方提供技术支持,商用版本需要授权
下一篇文章将对neo4j 进行扩展
内容篇幅较长,感谢观看!希望能对读者有所帮助,如果对于博客有任何建议或者意见,欢迎讨论,如果文章内容有误,可以直接私信或者在评论区留言,我会及时答复并且修复

目录
计算任意位数的正整数加法
计算1000位以内的正整数减法
计算任意位数的正整数乘法
500位内整数除法函数
计算时间差
可以处理0开头的数、重复数及200位以内的超大整数(封装)
计算指定天数 前/后 的日期及星期
进制转换(函数)
1、任意进制互转
二进制转十六进制(封装)(通过4位一段转换,可处理超大数)
十六进制转二进制(封装)(通过4位一段转换,可处理超大数)
二进制转十进制(封装)(只能处理cmd范围内的数,小巧方便代码中调用)
获取10进制数(含负数)的 原码、反码、补码(未封装)
转换 2、8、10、16、进制数并显示2进制 原码、反码、补码(未封装)
发几个我的函数
2009-02-20 日更新:修正加法函数中一处bug,增加整数除法“函数”(内勘多个标签,应该不算标准的封装)2009-02-18 日更新:更新乘法函数,大大缩短代码,并且效率大大提升,且不再受位数限制。理论上只要积不超过变量赋值的最大位数就可以。更新加法函数:代码略增,效率略为提高,且不再受位数限制。更新减法函数:代码略增,效率提高,位数由200提升到1000位。一、加法函数 任意位数 的正整数 进行 加法计算二、减法函数 可以对 200位 以内正整数 进行 减法计算三、乘法函数 可以对 任意位数 的正整数进行 乘法计算四、计算批处理运行时间函数 时间必须是24小时制,未考虑时间为00点的情况。五、查询指定天数前的日期(作者:Will Sort 出自:cn-dos )六、数字排序函数七、关于进制转换的函数1、任意进制互转(只能处理cmd范围内的数)标签段以封装,可直接调用,使用方法见标签上方的说明为方便使用,标签以外的代码作了界面美化等处理。使得代码略显臃肿。。。2、二进制转十六进制(封装)(通过4位一段转换,可处理超大数)3、十六进制转二进制(封装)(通过4位一段转换,可处理超大数)4、二进制转十进制(封装)(只能处理cmd范围内的数,小巧方便代码中调用)5、获取10进制数(含负数)的 原码、反码、补码(未封装)(只能处理cmd范围内的值)完全不懂计算机,只理解为计算机中负数用补码表达代码中二进制数用32位显示,超出32位的会出错,呵呵,不知道电脑中有没有用32位以上表达的二进制数,哈哈外行话见笑了^_^6、综合以上对2、8、10、16进制数进行转换、(未封装)显示转换后的2、8、10、16进制数及 原码、反码、补码
计算任意位数的正整数加法
@echo off
call :jia 354687654165435 35486456 ok
echo %ok%
pause
:jia 加法函数(封装)by @随风 @bbs.bathome.net
::计算任意位数的正整数加法
setlocal enabledelayedexpansion&set f=&set "t="
set var1=%~1&set var2=%~2&set /a j=0,n1=0,n2=0
for /l %%a in (0 1 9) do (set vard1=&set "vard2="
set var1=!var1:%%a= %%a !&set var2=!var2:%%a= %%a !)
for %%a in (!var1!)do (set/a n1+=1&set vard1=%%a !vard1!)
for %%a in (!var2!)do (set/a n2+=1&set vard2=%%a !vard2!)
(if !n1! lss !n2! (set var1=%var2%&set "var2=%var1%"
set vard1=%vard2%&set vard2=%vard1%))&set "var2=!var2: =!"
for %%a in (!vard1!) do (if "!var2!"=="" set /a var2=0
set /a a=%%a+!var2:~-1!+j&set t=!a:~-1!!t!&set "a=0!a!"
set "j=!a:~-2,1!"&set var2=!var2:~0,-1!)
if !j! neq 0 set "t=!j!!t!"
Endlocal&set %~3=%t%&goto :EOF
计算1000位以内的正整数减法
@echo off
call :jian 354687654165435 35486456 ok
echo %ok%
pause
:jian 减法函数(封装)by @随风 @bbs.bathome.net
::计算1000位以内的正整数减法
setlocal enabledelayedexpansion&&set t=&set f=&set "lin="
for /l %%a in (1 1 10) do set "lin=0000000000!lin!"
set lin=!lin!!lin!!lin!!lin!!lin!&set "lin=!lin!!lin!"
set var1=!lin!%~1&set var2=!lin!%~2&set vard1=&set/a j=0
set var1=!var1:~-1000!&set "var2=!var2:~-1000!"
if "!var1!" lss "!var2!" (set var1=%~2&set "var2=%~1"
set "f=-") else set var1=%~1&set "var2=%~2"
for /l %%a in (0 1 9) do set "var1=!var1:%%a= %%a !"
for %%a in (!var1!) do set "vard1=%%a !vard1!"
for %%a in (!vard1!) do (if "!var2!"=="" set/a var2=0
set /a a=%%a-j,b=!var2:~-1!
if !a! lss !b! (set /a a+=10,j=1)else set /a j=0
set /a w=a-b&set t=!w!!t!&set var2=!var2:~0,-1!)
for /f "tokens=* delims=0" %%a in ("!t!") do (
if "%%a"=="" (set t=0) else set "t=%%a")
Endlocal&set %~3=%f%%t%&goto :EOF
计算任意位数的正整数乘法
@echo off
call :cen 354687654165435 35486456 ok
echo %ok%
pause
:cen 乘法函数(封装)by @随风 @bbs.bathome.net
::计算任意位数的正整数乘法
setlocal enabledelayedexpansion
if "%~1"=="0" Endlocal&set %~3=0&goto :EOF
if "%~2"=="0" Endlocal&set %~3=0&goto :EOF
set f=&set jia=&set ji=&set /a n1=0,n2=0
set vard1=&set "vard2="&set var1=%~1&set "var2=%~2"
for /l %%a in (0 1 9) do (
set var1=!var1:%%a= %%a !&set var2=!var2:%%a= %%a !)
for %%a in (!var1!)do (set /a n1+=1&set vard1=%%a !vard1!)
for %%a in (!var2!)do (set /a n2+=1&set vard2=%%a !vard2!)
if !n1! gtr !n2! (set vard1=%vard2%&set vard2=%vard1%)
for %%a in (!vard1!) do (set "t="&set /a j=0
for %%b in (!vard2!) do (if "!jia!"=="" set /a jia=0
set /a a=%%a*%%b+j+!jia:~-1!&set "t=!a:~-1!!t!"
set a=0!a!&set "j=!a:~-2,1!"&set jia=!jia:~0,-1!)
set "ji=!t:~-1!!ji!"
if "!j:~0,1!"=="0" (set ss=) else set "ss=!j:~0,1!"
set jia=!ss!!t:~0,-1!)
if not "!j:~0,1!"=="0" set "t=!j:~0,1!!t!"
set "ji=!t!!ji:~1!"
Endlocal&set %~3=%ji%&goto :EOF
500位内整数除法函数
@echo off
set suru=000012/001200
call :cu0
%suru:/= % ok
echo. %ok%
pause
exit
:cu0 500位内整数除法函数(封装)by @随风 bbs.bathome.net
::函数内有 cu1 cu2 cu3 cu4 四个标签,引用时需注意
setlocal enabledelayedexpansion&set "lin=00000"
set /a zongw=1000,cs1w=0,cs2w=0,falg=0,x=0
if "!str!"=="1" Endlocal&set %~3=%ff%!num!&goto :EOF
if "%~1"=="0" set sang=0&goto cu4
if "!str!"=="0" set sang=以零为除数的错误。&goto cu4
if not defined xiaosu set /a xiaosu=10
for /l %%a in (1 1 5) do set "lin=!lin!!lin!!lin!"
set sang=&set ppp=&set var1=%~1&set "var2=%~2"
for /f "tokens=* delims=0" %%a in ("!var1!")do set var1=%%a
for /f "tokens=* delims=0" %%a in ("!var2!")do set var2=%%a
for /l %%a in (0 1 9)do (set "var1=!var1:%%a= %%a !"
set "var2=!var2:%%a= %%a !")
for %%a in (!var1!) do set /a cs1w+=1
for %%a in (!var2!) do set /a cs2w+=1
for /l %%a in (1 1 10) do (set t=&set cs=%~2&set/a j=0
for /l %%b in (1 1 !cs2w!) do (set /a a=%%a*!cs:~-1!+j
set t=!a:~-1!!t!&set a=0!a!&set "j=!a:~-2,1!"
set cs=!cs:~0,-1!&set cs%%a=&set "bj%%a=")
if !j! neq 0 (set cs%%a=!lin!!j!!t!&set "bj%%a=!j!!t!"
) else set cs%%a=!lin!!t!&set "bj%%a=!t!"
set "cs%%a=!cs%%a:~-%zongw%!")
set var2=!lin!!var2: =!&set "var2=!var2:~-%zongw%!"
set /a cswc=cs1w-cs2w&set "var1=!var1: =!"
if !cswc! lss 0 (set cswc=!cswc:-=!&set/a flag=1
for /l %%a in (1 1 !cswc!)do (
if %%a leq 11 set sang=0!sang!&set /a x=cswc-1
set "var1=!var1!0")
set "sang=!sang:~0,1!.!sang:~1!")
set ppp=!var1:~0,%cs2w%!&set "var1=!var1:~%cs2w%!"
if !flag! equ 1 (set /a bul=1) else set /a bul=0
goto cu2
:cu1
if not defined var1 (set "var1=0"
if not defined ppp goto cu4
if !flag! equ 0 (set sang=!sang!.&set /a flag=1))
set/a bul=1&set ppp=!ppp!!var1:~0,1!&set "var1=!var1:~1!"
:cu2
if !x! geq %xiaosu% goto cu4
set pvar1=!lin!!ppp!&set "pvar1=!pvar1:~-%zongw%!"
if "!pvar1!" lss "!var2!" (
if !bul! equ 1 (set sang=!sang!0&set /a bul=0
if !flag! equ 1 set /a x+=1)
if "!ppp:~0,1!"=="0" set "ppp="
goto cu1)
if !flag! equ 1 set /a x+=1
set /a bul=0
::计算商
for /l %%a in (1 1 10) do (
if "!cs%%a!" equ "!pvar1!" (
set "sang=!sang!%%a"&set "yu=!bj%%a!"&goto cu3)
if "!cs%%a!" gtr "!pvar1!" (set /a s=%%a-1
set "sang=!sang!!s!"&set yu=!t!&goto cu3)
set "t=!bj%%a!")
:cu3 计算差
set cjs=!ppp!&set cj1=&set m=&set/a jjj=0
for /l %%a in (0 1 9) do set "cjs=!cjs:%%a= %%a !"
for %%a in (!cjs!) do set "cj1=%%a !cj1!"
for %%a in (!cj1!) do (if "!yu!"=="" set/a yu=0
set /a a=%%a-jjj,b=!yu:~-1!
if !a! lss !b! (set /a a+=10,jjj=1)else set/a jjj=0
set /a w=a-b&set m=!w!!m!&set yu=!yu:~0,-1!)
for /f "tokens=* delims=0" %%m in ("!m!") do (
if "%%m"=="" (set m=0) else set "m=%%m")
if !m! equ 0 (
if "!var1:0=!"=="" set sang=!sang!!var1!&goto cu4
set ppp=&goto cu1) else set "ppp=!m!"
goto cu2
:cu4
if "!sang:~0,1!"=="." set "sang=0!sang!"
Endlocal&set %~3=%ff%%sang%&goto :EOF
计算时间差
@echo off
set t=%time%
call :time0 "%t%" "%time%" ok
echo %ok%
pause
:time0
计算时间差 (封装)
@echo off&setlocal&set /a n=0&rem code 随风 @bbs.bathome.net
for /f "tokens=1-8 delims=.: " %%a in ("%~1:%~2") do (
set /a n+=10%%a%%100*360000+10%%b%%100*6000+10%%c%%100*100+10%%d%%100
set /a n-=10%%e%%100*360000+10%%f%%100*6000+10%%g%%100*100+10%%h%%100)
set /a s=n/360000,n=n%%360000,f=n/6000,n=n%%6000,m=n/100,n=n%%100
set "ok=%s% 小时 %f% 分钟 %m% 秒 %n% 毫秒"
endlocal&set %~3=%ok:-=%&goto :EOF
可以处理0开头的数、重复数及200位以内的超大整数(封装)
@echo off
:start
setlocal enabledelayedexpansion&cls
for /l %%a in (1 1 10) do set str=!str! !random!
echo.&echo %str%
call :sort "%str%" ok
echo
%ok%
pause>nul
endlocal&goto start
:sort 可以处理0开头的数、重复数及200位以内的超大整数(封装)
@echo off&setlocal enabledelayedexpansion
for /f "delims==" %%a in ('set p. 2^>nul')do set "%%a="
for /l %%a in (1 1 20) do set "p.lin=0000000000!p.lin!"
for %%a in (%~1) do (set s=!p.lin!%%a&set "s=!s:~-200!"
if defined p...!s! (set p..%%a=!p..%%a! %%a
set p...!s!=!p..%%a! %%a) else (set p...!s!=%%a))
for /f "tokens=2 delims==" %%a in ('set p...') do (
for %%i in (%%a) do set "p.ok=!p.ok! %%i")
endlocal&set %~2=%p.ok:~1%&goto :EOF
计算指定天数 前/后 的日期及星期
@echo off
:start
setlocal&cls
set /p tian=请指定要追溯的天数:&echo\
call :Date2Day "%date%" %tian% ok
echo %ok%
endlocal&pause>nul&goto start
:Date2Day 计算指定天数 前/后 的日期及星期 (封装)
@echo off&setlocal ENABLEEXTENSIONS
for /f "tokens=1-3 delims=/-:\, " %%a in ('echo/%~1') do (
set /a yy=%%a,mm=100%%b%%100,dd=100%%c%%100)
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
set /a i=j-%~2,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
for %%a in (一/1 二/2 三/3 四/4 五/5 六/6 日/0) do (
for /f "tokens=1,2 delims=/" %%i in ("%%a")do set %%i=%%j&set ".%%j=%%i")
if %~2 gtr 0 (set /a d=^(7-%~2%%7+%date:~-1%^)%%7&set x=前) else (
set /a d=^(~%~2+1+%date:~-1%^)%%7&set x=后)
call set "d=星期%%.%d%%%"
endlocal&set %~3=%yy%-%mm%-%dd% %d%&goto :EOF
进制转换(函数)
1、任意进制互转
@echo off&color 1f&set /a q=10,h=2
title 任意进制互转 默认:%q%进制转%h%进制
:start
setlocal&echo.&echo. 被转换的数 被转换数的进制 需转换成的进制
echo.&echo. 如:95 16 10
表示将 16进制数95 转换 为10进制数
echo.&echo. 参数可用分割符为
空格 / + - \
如:95/16/10 或95+16+10
echo.&echo. 默认将 10进制 转换为 2进制(即上例中如果不输入 16 10 则默认为 10 2)
echo.&set /p num= 请输入需转换的数 &cls
if not defined num endlocal&goto start
for /f "tokens=1-3 delims=/+-\ " %%a in ("%num%") do (
set "num=%%a"
if not "%%b"=="" if not "%%c"=="" set /a q=%%b,h=%%c
)
call :nxn "%num%" ok %q% %h%
for /l %%a in (1 1 12)do (
if %%a equ 4 (
echo. %q%进制转%h%进制 结果
echo.&echo. %num% = %ok%
)else echo\
)
set /a w=%random%%%2
if %w% equ 1 (set f=1f) else (set f=df)
color %f%&endlocal&goto start
::函数使用方法:call :nxn "98" ok 10 2
::call :nxn "被转换的数" 保存结果的变量名 被转换数的进制 需转换成的进制
::默认将 10进制 转换为 2进制(即上例中不输入 10 2)
:nXn 任意进制互转 @随风 @bbs.bathome.net(封装)
@echo off&setlocal enabledelayedexpansion
if "%~4"=="" (set /a q=10,h=2)else (set /a q=%~3,h=%~4)
set "str=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for /l %%a in (0 1 35)do set .%%a=!str:~%%a,1!&set ".!str:~%%a,1!=%%a"
set sun=&set jie=&set "var=%~1"&set /a nnn=1,num=0
for /l %%a in (0 1 100) do (
if not "!var:~%%a,1!"=="" (call set sun=%%.!var:~%%a,1!%% !sun!))
for %%a in (!sun!) do set /a num=%%a*nnn+num,nnn*=q
:10进制转n进制
set /a yu=num%%h,num/=h
set "jie=!.%yu%!!jie!"&if !num! gtr 0 goto 10进制转n进制
endlocal&set %~2=%jie%&goto :EOF
二进制转十六进制(封装)(通过4位一段转换,可处理超大数)
@echo off&color 1f&title 二进制 转 十六进制
call :2x16 "11111111 11111111 11111111 11111110" ok
echo %ok%
pause
::以4位一段,分别转换为十六进制,不必考虑超大数问题
:2x16 二进制 转 十六进制
@随风 @bbs.bathome.net (封装)
@echo off&setlocal enabledelayedexpansion
set "str=0123456789ABCDEF"
set k=&set kk=&set xx=&set "x=000%~1"
set x=!x:0= 0!&set x=!x:1= 1!&set /a jj=0,ss=1
for %%a in (!x!) do set "xx=%%a !xx!"
for %%a in (!xx!) do (set /a jj+=%%a*ss,ss=ss*2
if !ss! equ 16 set k=!jj! !k!&set /a jj=0,ss=1)
for %%a in (!k!) do set kk=!kk!!str:~%%a,1!
endlocal&set %~2=%kk%&goto :EOF
十六进制转二进制(封装)(通过4位一段转换,可处理超大数)
@echo off&color 1f&title 十六进制 转 二进制
set mmm=bfa35e7d8
call :16x2 %mmm% ok
echo.&echo
十六进制 %mmm%
echo.&echo 二进制 %ok%
echo.&pause
::以4位一段,分别转换为二进制,不必考虑超大数问题
:16x2 十六进制 转 二进制
@随风 @bbs.bathome.net (封装)
@echo off&setlocal enabledelayedexpansion
set str=0123456789abcdef&set ok=&set "num=%~1"
for /l %%a in (0 1 15) do (set ".!str:~%%a,1!=%%a"
call set "num=%%num:!str:~%%a,1!= !str:~%%a,1!%%")
for %%i in (!num!) do (set /a x=0,n=!.%%i!
for %%a in (8 4 2 1) do (set /a x+=%%a
if !n! geq !x! (set ok=!ok!1) else (
set ok=!ok!0&set /a x-=%%a)))
endlocal&set %~2=%ok%&goto :EOF
二进制转十进制(封装)(只能处理cmd范围内的数,小巧方便代码中调用)
@echo off
call :2x10 01100100 ok
echo %ok%
pause
:2x10
2进制转 10进制 @随风 @bbs.bathome.net (封装)
@echo off&setlocal enabledelayedexpansion
set /a nnn=1,num=0&set nn=&set "n=%~1"
set "n=!n:0= 0!"&set "n=!n:1= 1!"
for %%a in (!n!) do set "nn=%%a !nn!"
for %%a in (!nn!) do set /a num+=%%a*nnn,nnn*=2
endlocal&set %~2=%num%&goto :EOF
获取10进制数(含负数)的 原码、反码、补码(未封装)
@echo off&color 1f&title 获取10进制数的 原码、反码、补码
::获取10进制数的 原码、反码、补码
::计算机中 负数用补码表达
::补码:反码+1
::反码:将二进制数(原码)按位取反 (即:1变0、0变1)
::原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
::个人理解为在计算机中表达负数的二进制数叫补码
::所以以下代码中,若输入的是负数则结果中补码代表该数
@echo off&rem @随风 @bbs.bathome.net @2009-01-15
:start
setlocal enabledelayedexpansion
for /l %%a in (1 1 15) do set "lin=00000!lin!"
echo.&echo.&set /p y10= 请输入一个10进制数可以为负数 &cls
if !y10! lss 0 (set /a n="~y10"+1,c=1) else set /a n=y10,c=1
:10x2 将10进制转成2进制 原码
set /a y=n%%2,n/=2&set "j=!y!!j!"&if !n! gtr 0 goto 10x2
set j=!lin!!j!&set "j=!j:~-32!"
set ss=!j:0= 0!&set "ss=!ss:1= 1!"
:: 获取反码
for %%a in (%ss%) do set /a n="^!%%a"&set "f=!f!!n!"
set f=!lin!!f!&set f=!f:~-32!&set "ss=!f!"
:buma 获取补码
set /a m=!ss:~-1!+c
if !m! gtr 1 (set c=1&set b=0!b!)else set c=0&set "b=!m!!b!"
set "ss=!ss:~0,-1!"
if defined ss goto buma
echo.
echo
10进制数
%y10%&echo.
echo原码
%j:~-32,8% %j:~-24,8% %j:~-16,8% %j:~-8%
echo反码
%f:~-32,8% %f:~-24,8% %f:~-16,8% %f:~-8%
echo补码
%b:~-32,8% %b:~-24,8% %b:~-16,8% %b:~-8%
endlocal&goto start
转换 2、8、10、16、进制数并显示2进制 原码、反码、补码(未封装)
@echo off
::转换 2、8、10、16、进制数并显示2进制 原码、反码、补码
::计算机中 负数用补码表达
::补码:反码+1
::反码:将二进制数(原码)按位取反 (即:1变0、0变1)
::原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
::个人理解为在计算机中表达负数的二进制数叫补码
::完全不懂计算机,只理解为计算机中负数用补码表达
::代码中二进制数用32位显示,超出32位的会出错
::只能处理cmd范围内的数
@echo off&title 转换 2、8、10、16、进制数并显示2进制 原码、反码、补码
::@随风 @bbs.bathome.net @2009-1-12
set "str=0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
set "color1=1f&set color2=df"&color 1f
for /l %%a in (0 1 35) do (
call set ".%%a=%%str:~%%a,1%%"
call set ".%%str:~%%a,1%%=%%a"
)
:start
setlocal enabledelayedexpansion&color %color1%
echo.
echo. ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
echo. ┃

echo. ┃输入格式:需转换的数+该数的进制(可用分割符 / \ + - 空格)┃
echo. ┃

echo. ┃默认输入的为10进制数、也可以是2、8、16进制、但必须指明进制┃
echo. ┃

echo. ┃如:需转换16进制 2afd 则输入 2afd+16
10进制数则不需要指明┃
echo. ┃

echo. ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
echo.&set /p num= 请输入需转换的数
&cls
if not defined num endlocal&goto start
for /f "tokens=1,2 delims=/\+- " %%a in ("%num%") do (
set "n0=%%a"
if "%%b"=="" (set jz=10) else set /a jz=%%b
)
echo.&echo 被转换的数为: !jz!进制数
!n0!&echo.
if !jz! equ 16 (set /a n10=0x!n0!) else (
if !jz! equ 10 (set n10=!n0!) else (
if !jz! equ 8 (set /a n10=0!n0!) else (
set /a nnn=1,n10=0&call :2x10 !n0!
)))
for %%a in (16 10 8 2) do call :10进制转n进制 !n10! %%a
echo.&call :yuan&echo.
endlocal&set color1=%color2%&set "color2=%color1%"
goto start
:10进制转n进制
set /a yu=n10%%%~2,n10/=%~2
set "jie=!.%yu%!!jie!"&if !n10! gtr 0 goto 10进制转n进制
set "xs=%~2"
echo !xs:~-5! 进制
!jie!
set d2=!jie!&set jie=&set "n10=%~1"
goto :EOF
:2x10
2进制转10进制
set /a n10+=!n0:~-1!*nnn,nnn*=2
set "n0=!n0:~0,-1!"
if defined n0 goto 2x10
goto :EOF
:yuan
for /l %%a in (1 1 15) do set lin=00000!lin!
set j=!lin!!d2!&set "j=!j:~-32!"
set ss=!j:0= 0!&set "ss=!ss:1= 1!"
:: 获取反码
for %%a in (%ss%) do set /a n="^!%%a"&set "f=!f!!n!"
set f=!lin!!f!&set f=!f:~-32!&set "ss=!f!"
set /a c=1
:buma 获取补码
set /a m=!ss:~-1!+c
if !m! gtr 1 (set c=1&set b=0!b!)else set c=0&set "b=!m!!b!"
set "ss=!ss:~0,-1!"
if defined ss goto buma
echo 原码
%j:~-32,8% %j:~-24,8% %j:~-16,8% %j:~-8%
echo 反码
%f:~-32,8% %f:~-24,8% %f:~-16,8% %f:~-8%
echo 补码
%b:~-32,8% %b:~-24,8% %b:~-16,8% %b:~-8%
goto :EOF
到此这篇关于批处理bat函数:大数字加减乘除、时期时间计算、数字排序、进制转换等的文章就介绍到这了,更多相关bat数值计算内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。

我要回帖

更多关于 bat创建文件 的文章

 

随机推荐