[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. MLlib之LR算法源码学习

    /** * :: DeveloperApi :: * GeneralizedLinearModel (GLM) represents a model trained using * Generaliz ...

  2. mysql 开发进阶篇系列 26 数据库RPM安装演示

    一.概述 上一章讲到了RPM安装后的文件目录,这章还是介绍下安装步骤.也便以后做参考吧. 1. 移出centos 7系统自带的mysql库 yum remove mysql-libs 2. 将下载的m ...

  3. 最全的maven的pom.xml文件详解

    pom.xml代码: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://ww ...

  4. 初识Quartz (一)

    首先大概的了解一下Quartz. 一:首先进入官网去看看什么是quartz.http://www.quartz-scheduler.org/ Quartz是一个功能丰富的开源作业调度库,可以集成到几乎 ...

  5. C# 元数据描述

    元数据概述:元数据是一种二进制信息,用以对存储在公共语言运行库可移植可执行文件 (PE) 文件或存储在内存中的程序进行描述.将您的代码编译为 PE 文件时,便会将元数据插入到该文件的一部分中,而将代码 ...

  6. MySQLdump之single-transaction详解

    MySQLdump之single-transaction详解 single-transaction 开启general log选项 查看目前general log的情况 mysql> show ...

  7. SQL 同一张表中相同字段的内容合并为一条记录(不同字段的那一列每个记录后面加逗号)

    一.创建表 create table stuUnion ( sid int identity primary key, cid int, id ) ) 二.添加数据 insert into stuUn ...

  8. 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。

    错误提示:可能会导致循环或多重级联路径.请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束. 原因:自表连接(同一张表 ...

  9. C#基础知识回顾-- 反射(2)

    使用反射调用方法: 一旦知道一个类型所支持的方法,就可以对方法进行调用.调用时,需使用包含在   MethodInfo中的Invoke()方法.调用形式:   object Invoke(object ...

  10. ASP .NET MVC HtmlHelper扩展——简化“列表控件”的绑定

    在众多表单元素中,有一类<select>元素用于绑定一组预定义列表.传统的ASP.NET Web Form中,它对应着一组重要的控件类型,即ListControl,我们经常用到DropDo ...