[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. javascript 最全面的数组操作合集

    一.数组添加.删除.替换.截取操作 1.arr.unshift(1) 在数组头部添加一个元素 1 (直接改变原数组,返回值为添加元素后数组的length) 2.arr.shift() 在数组的头部删除 ...

  2. 在浏览器中输入www.baidu.com后执行的全部过程

    1.客户端浏览器通过DNS解析到www.baidu.com 的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径.客户端浏览器发起一个HTTP会话到220.181.27.48 ...

  3. [转]idea导入eclipse的web项目

    https://www.cnblogs.com/xiaoBlog2016/archive/2017/05/08/6825014.html 一.导入自己的web项目 步骤:File->New-&g ...

  4. oracle10g和oracle11g导入导出数据区别

    其中flxuser为用户名,flxuser为密码,file值为导入到数据库中的备份文件. oracle10g和oracle11g导入导出数据的命令方式大有不同: oracle10g导入数据: imp  ...

  5. LearnOpenGL学习笔记(六)——纹理单元

    #version 330 core out vec4 FragColor; in vec3 ourColor; in vec2 TexCoord; uniform sampler2D ourTextu ...

  6. CentOS7用阿里云Docker Yum源在线安装Docker

    一.参考文档 官方Docker安装文档:https://docs.docker.com/install/linux/docker-ce/centos 阿里云Docker安装文档:https://yq. ...

  7. Java 容器源码分析之Map-Set-List

    HashMap 的实现原理 HashMap 概述 HashMap 是基于哈希表的 Map 接口的非同步实现.此实现提供所有可选的映射操作,并允许使用 null 值和 null 键.此类不保证映射的顺序 ...

  8. (转)Sphinx中文分词安装配置及API调用

    这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂 ...

  9. AI时代的OCR识别技术浅析

    人工智能这个词可谓是耳熟能详,近几年人工智能热潮再次席卷而来,引起轰动的要数google的AlphaGo,相继打败了围棋界的韩国选手李世石以及世界冠军柯洁,见证了人工智能发展的里程碑式的变革,人工智能 ...

  10. Redis缓存使用技巧

    缓存能够有效加速应用的访问速度,同时可以降低后端负载,在应用架构中起着至关重要的作用,本文主要介绍缓存使用的一些技巧. 缓存更新策略 LRU/LFU/FIFO算法剔除 场景:数据一致性要求较低 原理: ...