最近应公司项目的一个新的需求:用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 很高深,而我只是学了一点皮毛,把一些基础记下来以备不时之需!其实网络是最好的老师,可以从上面学到很多东西。至于有没有写错,请大家发现的指正出来!谢谢大家
--------------------------------------------------------------------------------------------------------------------------------------