[20171225]变态的windows批处理4.txt

--//昨天学习windows 批处理的echo &.使用它可以实现类似回车换行的功能.例子:

1.echo &.
R:\>echo 1111 & echo 2222
1111
2222

--//但是如果写成如下:

R:\>echo 1111 & echo 2222 > aa.txt
1111

R:\>cat aa.txt
2222

--//你可以发现1111,显示输出,而2222写入文件aa.txt,改写成管道看看.

R:\>echo 1111 &echo 2222 | cat
1111
2222

--//OK.实际上这个是假象,第1行走屏幕,第2行走管道,看下面的测试就明白了.如果要写到文件实际上要加括号,这个跟linux有一个相似.
R:\>(echo 1111 &echo 2222 ) > aa.txt

R:\>cat aa.txt
1111
2222

--//这个倒是正常的情况.

2.利用这个特性可以通过管道传输命令给sqlplus.

R:\>echo set timing off head off; &echo select  sysdate  from dual;
set timing off head off;
select  sysdate  from dual;

R:\>echo set timing off head off; &echo select  sysdate  from dual;  | sqlplus -s scott/book@78
set timing off head off;
SYSDATE
-------------------
2017-12-25 10:06:33

--//晕!!明显set timing off head off;这行没有经过管道输出,而是直接输出到屏幕.因为如果输入管道,显示的应该是没有sysdate字段名.
--//仔细看前面的例子才发现实际上echo 1111 &echo 2222 | cat 输出1111走屏幕,而输出2222管道,看上去显示是正常的.
--//也就是要2行都通过管道必须使用括号.修改如下.

R:\>(echo set timing off head off; &echo select  sysdate  from dual; ) | sqlplus -s scott/book@78
2017-12-25 10:08:59

--//我google发现另外的写法,在&前加入^.
R:\>echo set timing off head off;^&echo select  sysdate  from dual;  | sqlplus -s scott/book@78
2017-12-25 10:11:57

--//确实是Ok了,但是另外的问题来了:
R:\>echo set timing off head off;^&echo select  sysdate  from dual;  | cat
set timing off head off;
select  sysdate  from dual;

R:\>echo set timing off head off;^&echo select  sysdate  from dual; > aa.txt

R:\>cat aa.txt
set timing off head off;&echo select  sysdate  from dual;

--//无法理解windows的批处理,通过管道输出2行.而使用文件接收显示的是set timing off head off;&echo select  sysdate  from dual;
--//重定向到文件时^实际上转义&.
set timing off head off; &echo select  sysdate  from dual;

--//而实际上这样执行是不行的.
R:\>cat aa.txt | sqlplus -s scott/book@78
Enter value for echo:
SP2-0546: User requested Interrupt or EOF detected.

--//还是不好理解windows的批处理的玄妙!!在我感觉最佳的方式还是加括号比较好理解一些.
--//实际上如果能很好理解链接http://blog.itpub.net/267265/viewspace-2140599/,通过管道实际上就是单行的批处理.如果能理解这个,上面的测试
--//就能很好理解.

--//但是如果echo里面有括号问题又来了:
R:\>(echo set timing off head off;&echo select  (sysdate+1)  from dual;)  | sqlplus -s scott/book@78
此时不应有 from。

--//也就是)要转义,要转义3次.遇到这种情况不断增加^就是了.
R:\>(echo set timing off head off;&echo select  (sysdate+1^^^)  from dual;)  | sqlplus -s scott/book@78
2017-12-26 11:16:33

--//而前面那种方式就简单了.
R:\>echo set timing off head off;^&echo select  (sysdate+1)  from dual; |   sqlplus -s scott/book@78
2017-12-26 11:17:35

--//在我看来windows批处理真是变态加变态..

[20171225]变态的windows批处理4.txt的更多相关文章

  1. SQL Server数据库备份:通过Windows批处理命令执行

    通过Windows批处理命令执行SQL Server数据库备份 建立mybackup.bat ,输入以下内容直接运行该脚本,即可开始自动备份数据库也可把该脚本加入windows任务计划里执行. --- ...

  2. cmd下windows批处理,获取当前系统时间,生成日志文件名

    示例: rdGetRTData_log%date:~0,4%%date:~5,2%%date:~8,2%.txt 生成格式: rdGetRTData_log20151103.txt 编写Windows ...

  3. WINDOWS批处理命令使用大全

    来源:http://www.942dn.com就是爱电脑网 WINDOWS批处理命令使用大全 批处理,也称为批处理脚本,英文译为BATCH,批处理文件后缀BAT就取的前三个字母.它的构成没有固定格式, ...

  4. 常用的Windows批处理

      切换执行路径 如果不换盘的话:cd xxx换盘:cd /d xxx   获取当前日期 编写Windows批处理时经常会需要使用到日期和时间作为文件名,所以是非常重要的. 如何获取日期呢?格式:  ...

  5. [转帖]Windows批处理(cmd/bat)常用命令小结

    Windows批处理(cmd/bat)常用命令小结 非常值得学习的文档 先放这里 有时间做实验, 转载自:“趣IT”微信公共号 前言 批处理文件(batch file)包含一系列 DOS命令,通常用于 ...

  6. Windows 批处理大全(附各种实例)

    Windows 批处理大全(附各种实例) 2009年07月19日 21:31:00 阅读数:2552 批处理文件是无格式的文本文件,它包含一条或多条命令.它的文件扩展名为 .bat 或 .cmd.在命 ...

  7. Windows 批处理(cmd/bat)常用命令教程

    Windows批处理(cmd/bat)常用命令教程 简单详细,建议收藏 常见问题: 1.如果你自己编写的.bat文件,双击打开,出现闪退 2.批处理.bat 文件中输出中文乱码 解决方法在文章末尾! ...

  8. Windows批处理(cmd/bat)常用命令

    Windows批处理(cmd/bat)常用命令 一.总结 一句话总结: 1.批量处理图片的方式? PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本: 2.大量的重复的操作 ...

  9. Windows 批处理入门

    Windows 批处理入门   目录 本教程概述 用到的工具 标签 简介 1.命令简介 2.符号简介 3.语句结构 4.实例讲解 本教程概述 本课我们学习windows批处理 用到的工具 cmd.ex ...

随机推荐

  1. Java开发技术大揭底——让你认知自己技术上的缺陷,成为架构师

    一.分布式架构体系 分布式怎么来的.传统的电信.银行业,当业务量大了之后,普通服务器CPU/IO/网络到了100%,请求太慢怎么办?最直接的做法,升级硬件,反正也不缺钱,IBM小型机,大型机,采购了堆 ...

  2. Orange——开源机器学习交互式数据分析工具

    Orange为新手和专家提供开源机器学习和数据可视化.使用大型工具箱交互式数据分析工作流程. 交互式数据可视化 Orange的全部内容都是关于数据可视化,帮助发现隐藏的数据模式,提供数据分析过程背后的 ...

  3. Xcode 8.X Command Line Tools

    Summary Step 1. Upgrade Your System to macOS Sierra Step 2. Open the Terminal Application Step 3. Is ...

  4. MongoDB的aggregate聚合

    聚合框架中常用的几个操作: $project:修改输入文档的结构.可以用来重命名.增加或删除域,也可以用于创建计算结果以及嵌套文档.(显示的列,相当遇sql 的) $match:用于过滤数据,只输出符 ...

  5. 如何自定义CSS滚动条的样式?

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由前端林子发表 本文会介绍CSS滚动条选择器,并在demo中展示如何在Webkit内核浏览器和IE浏览器中,自定义一个横向以及一个纵向的 ...

  6. SSH原理和应用

    SSH(Secure SHell)是为远程登录, 远程通信等设计的安全通信协议, 由芬兰研究员于1995年提出,其目的是用于替代非安全的Telnet.rsh.rexec等不安全的远程Shell协议. ...

  7. 启动设置mongodb

    启动 ①:启动之前,我们要给mongodb指定一个文件夹,这里取名为”db",用来存放mongodb的数据. ②:微软徽标+R,输入cmd,首先找到“mongodb”的路径,然后运行mong ...

  8. MVC 【Razor 视图引擎】案例分析

    using MvcApplication1.Models; using System; using System.Collections.Generic; using System.Linq; usi ...

  9. SqlServer主键

    *主键 作用:唯一标识表中的一条记录. *特点: 1不能重复的列. 2主键不能为null. *同名时如何处理:王洋(大) 王洋(小) *主键有两种选用策略: 业务主键和逻辑主键. 业务主键是使用有业务 ...

  10. Vue 系列之 渲染与事件处理

    渲染相关 列表渲染 与 条件渲染 Vue 中的常见的渲染有 列表渲染 和 条件渲染 所谓条件渲染,则是通过添加一定的逻辑条件来进行 Dom 元素的操作 v-if v-else v-else-if &l ...