set 续3
-------siwuxie095
set 技巧高级篇:
1、利用
set /a 进行赋值
在开启变量延迟情况下,要判断数组 S!n!
的值的情况,
不可以这么写:
if !S!n!!==0 echo zero
也不可以这么写:
if S!n!==0 echo zero
可以利用 set /a 对等号右边表达式变量不必添加变量符号的规则
来实现赋值,赋值后即可进行判断
set /a var=S!n!
if !var!==0 echo zero
这里,如果不是用 set /a,而仅仅 set var=S!n!,得到的 var 仅仅
是数组名,同样行不通
当多个变量需要赋统一个值时,也可以用 set /a 来达到简化代码的目
的:
|
@echo off echo pause |
sublime中:

有多个计算式,同样也可以用 set /a 来简化代码:
|
@echo off echo pause |
sublime中:

2、利用 set /p var=%num%<nul 输出数据
如果输出大量的数据,用 echo 命令,每行只输出一个数据,这样
会浪费大量的显示界面,不符合习惯。将大量数据在同一行输出必
须用 set 命令。
set /p var=%num%<nul,可以实现对数字连续输出的效果
如:
|
@echo off for /l %%i in (1,1,10) do pause |
sublime中:

运行一览:

上面的全部数据都揉成一团,不符合习惯,
可以增加空格隔开数据:
|
@echo off for /l %%i in (1,1,10) do pause |
sublime中:

运行一览:

数字与数字之间是隔开,但是,如果输出的数字位数不一样,
而间隔都相同,就会造成下面一种可能的结果:
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 18 19
即,上下没有对齐,依然不符合书写和阅读习惯
实现上下对齐,要借助输出格式:%var:~m,n%
具体实现:先对每个数字前面增加若干个空格,然后用
%var:~m,n%
取末尾 k 位输出即可。另外,外加一个计
数器,每输出 i 位数后换行。
格式:
set var=
%str%
set /p print=%var:~-k%<nul
|
:: %str% set var= %str% set /p print=%var:~-k%<nul |
sublime中:

如:
|
@echo off setlocal enabledelayedexpansion for /l %%i in (11,1,100) do ( rem 下面的 = 和 %%i 之间隔了那么多空格 rem 是为了后面的!var:~-7!的输出格式做准备 个字符 set var= %%i set /p print=!var:~-7! <nul set /a num=%%i%%10 if !num!==0 ) pause |
sublime中:

运行一览:

set /p print=%num%<nul 中的 print 并不是必须的,
可以省略为 set /p =%num%<nul,不过这样写不太规
范,不建议这么写。
再如:
读入两个数据,输入两个数据之间的所有数。要求:每输出
10 个数据后换行,并且上下数字要靠右对齐
goto 实现:
|
@echo off setlocal enabledelayedexpansion set /p a=请输入起始数字 set /p b=请输入最终数字 :begin if !a! leq !b! ( rem 注意下面 var 和 !a! 之间有若干空格 set var= !a! rem 注意下面 ! 和 <nul 之间有一个空格 set /p v=!var:~-5! <nul if !num! == 11 ( echo. ) goto begin ) echo.&pause |
sublime中:

运行一览:

for 实现:
|
@echo off setlocal enabledelayedexpansion set /p a=请输入起始数字 set /p b=请输入最终数字 for /l %%i in (%a%,1,%b%) set var= !a! set /p v=!var:~-5! <nul set /a tem=!num!%%10 if !tem!==0 ) echo.&pause |
sublime中:

小结:
<nul 是 0<nul 的简写,0 句柄是默认的输入句柄,nul 是空设备,
所以 <nul 表示从空设备获取输入
set /p 执行时会等待用户的输入,<nul 使得 set /p 输入设备为空
(默认情况下为 0<con,也就是键盘输入 )此时 set /p 就会自动
终止输入,此处的 <nul 和手动按回车效果一样,只是它不需要人工
操作。也就是:
set /p=提示语句<nul
等同于:
set /p=提示语句【按回车】
利用这个特性,再加上 set /p 内置的不换行显示提示语句的功能,
就能够实现不换行显示,不过它有一个缺陷,就是无法显示以等号开
头的行(而且 win7 下会把开头连续的空格与制表符忽略)
【made by siwuxie095】
set 续3的更多相关文章
- .Net Core MVC 网站开发(Ninesky) 2.3、项目架构调整(续)-使用配置文件动态注入
上次实现了依赖注入,但是web项目必须要引用业务逻辑层和数据存储层的实现,项目解耦并不完全:另一方面,要同时注入业务逻辑层和数据访问层,注入的服务直接写在Startup中显得非常臃肿.理想的方式是,w ...
- [.NET] C# 知识回顾 - 委托 delegate (续)
C# 知识回顾 - 委托 delegate (续) [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/6046171.html 序 上篇<C# 知识回 ...
- iOS 开发者账号到期续费流程
1.登录developer.apple.com,查看到期时间 2.到期提醒通知,点击Renew Membership续费(一般提前一个月提醒续费) 3.个人开发者账号续费需要支付 688人民币/年(9 ...
- 微信公众号开发系列教程一(调试环境部署续:vs远程调试)
http://www.cnblogs.com/zskbll/p/4080328.html 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试 ...
- CI-持续集成(1)-软件工业“流水线”概述
CI-持续集成(1)-软件工业“流水线”概述 1 概述 持续集成(Continuous integration)是一种软件开发实践,即团队开发成员经常集成它们的工作,通过每个成员每天至少集成一次, ...
- 分享我基于NPOI+ExcelReport实现的导入与导出EXCEL类库:ExcelUtility (续3篇-导出时动态生成多Sheet EXCEL)
ExcelUtility 类库经过我(梦在旅途)近期不断的优化与新增功能,现已基本趋向稳定,功能上也基本可以满足绝大部份的EXCEL导出需求,该类库已在我们公司大型ERP系统全面使用,效果不错,今天应 ...
- [译]Godot系列教程三 - 场景实例化(续)
场景实例化(续) 要点 场景实例化带来很多便利的用法,总体来说有: 将场景细分,更便于管理 相对于某些引擎中的Prefab组件更灵活,并且在许多方面更强大 是一种设计更复杂的游戏流程甚至UI的方式 这 ...
- 【小白的CFD之旅】13 敲门实例【续3】
接上文[小白的CFD之旅]12 敲门实例[续2] 4 Results4.1 计算监测图形4.2 Graphics4.2.1 壁面温度分布4.2.2 创建截面4.2.3 显示截面物理量4.2.4 Pat ...
- 【小白的CFD之旅】12 敲门实例【续2】
接上文[小白的CFD之旅]敲门实例[续] 主要内容 3 Solution3.1 Solution Methods3.2 Solution Controls3.3 Monitors3.4 Report ...
- jquery实现简单瀑布流布局(续):图片懒加载
# jquery实现简单瀑布流布局(续):图片懒加载 这篇文章是jquery实现简单瀑布流布局思想的小小扩展.代码基于前作的代码继续完善. 图片懒加载就是符合某些条件时才触发图片的加载.最常见的具体表 ...
随机推荐
- LARC Caffe笔记(一) Setup
采用杂记的形式 从查找到知乎页面开始:https://www.zhihu.com/question/27982282 到mnist example页面:http://caffe.berkeleyvis ...
- windows10企业版2016长期服务版激活 -------转
原地址: https://blog.csdn.net/chaoyu168/article/details/79241506 win10 2016 长期服务版的ISO文件中本身就带有KMS激活KEY,不 ...
- c++ istringstream的用法
一.测试代码 istringstream 是将字符串变成字符串迭代器一样,将字符串流在依次拿出,比较好的是,它不会将空格作为流.这样就实现了字符串的空格切割. #include<iostream ...
- java MessageFormat.format 用法
FormatElement: { ArgumentIndex }:是从0开始的入参位置索引. { ArgumentIndex , FormatType } { ArgumentIndex , Form ...
- Linux性能评估命令
Linux性能评估工具 https://www.cnblogs.com/dianel/p/10085454.html Linux性能评估工具 目录 介绍 负载:uptime 查看内核的信息: dmes ...
- Linux下驱动模块学习
1.modutils中提供了相关的insmod,rmmod,modinfo工具2.modprobe在识别出目标模块所依赖模块后也是调用insmod.3.从外部看模块只是普通可重定位的目标文件.可重定位 ...
- Visual Studio 2005 自带单元测试
一 单元测试简介 单元测试是代码正确性验证的最重要的工具,也是系统测试当中最重要的环节.也是唯一需要编写代码才能进行测试的一种测试方法.在标准的开发过程中,单元测试的代码与实际程序的代码具有同等的 ...
- CentOS 6安装php加速软件Zend Guard(转)
(尚未验证) PHP5.3以上的版本不再支持Zend Optimizer,已经被全新的 Zend Guard Loader 取代,下面是安装Zend Guard具体步骤,以下操作均在终端命令行执行 1 ...
- CentOS7.2 安装redis 3.0.6集群
1.环境确认 a.系统版本查看 [hadoop@p168 ~]$ cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) b.安装依 ...
- NOIP2013 Day2
1.积木大赛 https://www.luogu.org/problemnew/show/1969 这道题在考试时暴力得比较麻烦,导致只得了80分,t了两个点. 思路为寻找一个区间内高度大于0的最低点 ...