读代码,签劳动合同

2016/07/25 第一次签劳动合同,完全没搞懂……

Posted by WangXiaoDong on July 25, 2016

时间:2016年7月25日 天气:晴:sunny:


Author:冬之晓::smirk:
Email: 347916416@qq.com
MyAppearance: MyAppearance

    今天又是一个大晴天,白天继续看书,感觉自己有学不完的知识,果然一个真正项目
的代码没有那么简单。看了一天也没有头绪,实在是不知道该如何下手!下午公司让我签署
了劳动合同,因为是第一次工作,所以合同里面的好多内容都搞不懂,也没有仔细看就签了。
现在主要的目标是把程序学好,以后能运用自如,独当一面更好地工作,
为祖国的科技发展尽一份力!

晚上回宿舍后,没啥事,就决定继续命令行的学习。

标准输入、输出及错误日志的重定向

要想学号Windows的命令行,重定向必须要熟练掌握。主要的重定向技术如下:

重定向技术 描述
command1>command2 将第一个命令的输出作为第二个命令的输入
command<[path]filename 从指定的文件路径中提取命令的输入信息
command>[path]filename 将输出发送到指定文件,必要时需要创建该文件或者重写该文件(如果该文件已经存在)
command»[path]filename 将输出附件到指定的文件(如果该文件存在),或者创建该文件并向其写入
command<[path]filename>[path]filename 从指定的文件获取命令的输入,之后将命令的输出发送到指定文件
command<[path]filename»[path]filename 从指定的文件获取命令的输入,之后将命令的输出附加到指定文件
command 2>[path]filename 创建指定的文件,之后将错误输出信息发送到该文件。如果该文件存在,则其内容会被重写
command 2>&1 将错误输出信息发送到标准输出
标准输出重定向到其他命令

管道技术也是对应Windows命令行非常有用的,比如:
command1 | command2
这里通过管道(|),command1的输出被重定向到command2的输入啦!

命令链与分组

当然,为了执行稍微复杂点的命令,必须有命令链与分组的知识:

符号 语法 描述
& command1&command2 执行命令1,之后执行命令2
&& command1&&command2 如果命令1成功完成,则执行命令2
|| command1||command2 如果命令1执行失败,则执行命令2
变量

对于一个任何一个语言的学习,变量都是必不可少的。Windows脚本语言通过set variable_name=variable_value来设置变量。使用变量可以用两个%将变量加在中间,比如命令:cd %SystemRoot%\System32就是进入变量SystemRoot对应值的System32路径下。当然,还需要了解变量的作用范围。不像C++、Java这类语言可以使用{}限制变量的作用范围,Windows脚本需要使用setlocalendlocal命令限制变量的范围,如下面的例子:

rem ************************
rem Script: localVariable.bat
rem Creation Data: 2016-7-25
rem Last Modified: 2016-7-25
rem Author: XiaoDong Wang
rem Email: 347916416@qq.com
rem ************************
rem Description: Test the local variable
rem ************************
rem Files: Stores output none
rem ************************

@echo off
set sysCount=0
set deviceCount=0
rem Start localization
setlocal
set sysCount=2
set deviceCount=2
echo Local count: %sysCount% system edits ^& %deviceCount% dev ice check
endlocal
echo Local count: %sysCount% system edits ^& %deviceCount% dev ice check

得到的结果是:

Local count: 2 system edits & 2 dev ice check
Local count: 0 system edits & 0 dev ice check

可以看出,嵌套层局部变量不会影响到上一层的变量。

条件表达式

有了变量基础,就可以学习条件表达式了,主要的条件表达式如下:

if condition (statement1) [else (statement2)]----如果condition成立,则执行statement1,否则执行statement2
if condition (statement)----如果condition成立,则执行statement
if not condition (statement1) [else (statement2)]----如果condition不成立,则执行statement1,否则执行statement2
if not condition (statement)----如果condition不成立,则执行statement
if defined variable (statement)----如果定义了变量variable,则执行statement
if not defined variable (statement)----如果没有定义变量variable,则执行statement

上面的用法很好理解,这几种用法所见即所得。关键要知道嵌套条件的表达方式,这点和其他语言有点不同,嵌套的if语句前面要加上@。如下例:

if %1=="1" (@if "%2==2" (hostname & ver) else (ver)) else (hostname & netstat -a)
命令行迭代语句

有了if,当然少不了for啦。最基本的for语句是:
for iterator do (statement)
这里的iterator用来控制for循环的执行,使用时应注意以下几点:

  • iterator变量之存在于for循环的上下文中
  • iterator变量名必须在a~z或者A~Z的范围内,比如%%A、%%b、%%C
  • iterator变量名大小写敏感,即:%%A与%%a不同 for语句不同的结构有不同的用途,具体规则如下表:
迭代用途 语法格式
文件集合 for %%variable in (fileSet) do statement
目录集合 for /d %%variable in (directorySet) do statement
子目录中的文件 for /r [path] %%variable in (fileSet) do statement
遍历一系列的值 for /l %%variable in (stepRange) do statement
分析文本文件、字符串以及命令输出 for /f [“options”] %%variable in (source) do statement

注意:在脚本中使用两个%,命令行中输入则只需要一个%(下面的例子都是在命令行输入,则只使用了一个%)

  • 例如测试遍历一些列值的操作可以直接可以在命令行中这样输入:
    for /l %a in (0,2,10) do echo %a
    则输出:
    0
    2
    4
    6
    8
    10
    
  • 测试目录集合的操作可以直接可以在命令行中这样输入:
    for /d %a in (c:\*) do echo %a
    则输出:
    c:\Drivers
    c:\Intel
    c:\KuGou
    c:\PerfLogs
    c:\Program Files
    c:\Program Files (x86)
    c:\script
    c:\SysWOW64
    c:\Users
    c:\Windows
    
  • 在处理子目录文件的例子需要解释一下:
    for /r [path] %%variable in (fileSet) do statement
    里面的[path]设定的是目录起点,比如C:\,不写则默认为当前目录比如要列出C盘中的所有的文本文件则可以在命令行中输入:
    for /r C:\ %a in (*.txt) do echo %a
    这个结果很长,你可以自己试试:sunglasses:
    好困啊,今天就到这里,以后有时间继续学,总之,加油吧!↖(^ω^)↗