Batch file command 基础了解

来源:互联网 发布:山大威海网络管理中心 编辑:程序博客网 时间:2024/05/16 08:01

最近应公司项目的一个新的需求:用batch file command 在原来PDF 文档的标记前面加一个Header 信息,便于下一步可以根据这个头信息进行对文件进一步做处理。

 

经过几天时间的学习,大致了解了一些东西,下面就将所学的东西写出来,一来分享讨论,二来可以留作以后参考之用。

 

1: @echo off    -------这个命令很简单实用,作用是不显示命令本身。

2: echo -------输出信息 ,你可以这样使用:echo "this is a message"  用来显示在屏幕上 或者

                 echo "this is a message">filename  输出到一个文件中

3: >  输出到文件(替换原来的)  >> 追加到文件(原来的保留)。

4: if [not]

       a: exist   用来存在判断  可以判断文件 或者 文件夹 是否存在。

       例子:if not exist %tempDir% md %tempDir%

       b: 输入判断,例如 if "条件1"=="条件2" goto label.

       c: 结果判断,例如 if ERRORLEVEL 0 goto label.

5: :label 定义一个标记,和goto 组合使用。

6: goto  label   跳转到 标记定义的地方。

7: ::或者rem  起注释作用。

8: pause 暂停的意思,在屏幕上会显示一条 press any key for continue。。。。。。

9: call 在一个脚本中调用另一个脚本。例如 call xx.bat

10: find 用来在一个文件中或者输出中查找指定字符串。

格式如下:FIND [/V or /C][/I][/N] "string" [drive:][path]filename

         它有几个参数 需要注意。

         /V     Displays all lines not containing the string specified.

        /C    Displays the count of lines containing the string.

        /I     Ignores the case of characters when searching for the string.

        /N    Displays the line numbers with the displayed lines.

       "string"       Specifies the text string to find.

       drive:/path   Specifies the location of the file or files to search.

       filename        Specifies the name of the file to be searched.

如果没有输入文件名字 那么它会在 你的输入文本 或者 输入流中 查找 

例如: dir "path" /b|find /v "string" -------在一个流中查找不包含string的行。

11:for 这个命令比较复杂,我就说点简单的。

   第一种用法就是 for %%i  in (set) do (do something)

      它用来遍历 set 集合。每一个 都付给变量 %%i. 然后在范围内取出用就可以。

   第二种用法 for /F "eol=? tokens=1,* delims=/" %%i in (set) do (do something) 解析字符串。

      tokens  就是变量的定位。上面就是取得分割后的第一个字符串 和 剩余的。

      delims 就是用什么来分割字符串。

      eol 指定一个字符 那么以改字符开始的行会被忽略掉。

      例如:for /F "tokens=1,2,3,* delims=;" %%i in ("JJL;FFT;20091010;The rest") do (

             echo %%i

             echo %%j

             echo %%k

       )

      那么 1 就代表 JJL  2 代表 FFT 3 代表 20091010 *代表剩余字符串。

      那么有人会问怎么取这些变量呢? 很简单 %%i 代表第一个  %%j 代表第二个 %%k 代表第三个 一次类推。

12 dir 口令较复杂。可以让你显示文件参数 属性 是显示文件 还是显示文件夹 等等。大家可以参考网络上的一些资料。

下面列举一点 比较实用的(部分参考网络上的)

 

1 :  计算字符串的长度

set count=0
set "a=%curTime%"  ::这里用你需要的字符串替代就可以了  注意是 %curTime%.
:loop
set /a count+=1
set a=%a:~1%
if "%a%"=="" (goto :ne1) else goto :loop
:ne1

echo %count%

 

2: 取得系统当前的时间

::get the currency time
for /F "tokens=1,2,3 delims=/ " %%a in ("%date%") do (
 set curTime=%%c%%a%%b
)

注意:不同的系统 时间的显示格式不一样。你可以自己先查看一下 然后再修改函数。我机器上 显示是MM/DD/YYYY

要求显示 YYYYMMDD。所以我用符号/ 分割字符串 取得第 1 2 3 个字符 重新组装就可以了。

 

3: 判断文件夹是不是为空

dir “文件夹位置” /b|find /v "0471391E-C911-11D9-8BDE-F66BFD1E3F3A" >nul&&echo folder is not empty||echo folder is empty.

这里用到了 find 口令,仔细阅读上面的介绍就会理解了。至于为什么要用 "0471391E-C911-11D9-8BDE-F66BFD1E3F3A" 据我了解 应该是 减少相同概率。在一个文件夹里找这么一个文件可能性不高。经过我测试 如果文件夹中只包含上面文件,那么会显示空文件夹。

 

-------------------------------------------------------------------------------------------------------------------------------------

这些都是自己的一些学习心得,其实这个batch file command 很高深,而我只是学了一点皮毛,把一些基础记下来以备不时之需!其实网络是最好的老师,可以从上面学到很多东西。至于有没有写错,请大家发现的指正出来!谢谢大家

--------------------------------------------------------------------------------------------------------------------------------------

原创粉丝点击