批处理命令点滴 bat
rem #001
rem 当%%i 在 myfile.txt ,遍历当前所有子目录,并将文件copy 到指定目录
md d:\bbb
FOR /F "tokens=1,2* delims= " %%i in (myfile.txt) do for /r %%a in (%%i) do copy %%a d:\bbb\
rem #002
rem myfile.tx为子系统名称,根据子系统将不同目录下的同类型的文件汇总成单一文件
rem 去掉只读属性
attrib * -r /s
rem 将每个单个的文件增加一个空行,防止合并操作导致的并行问题
FOR /F "tokens=1,2* delims= " %%i in (myfile.txt) do for /r %%a in (*.prc,*.tab,*.viw,*.sql,*.vw) do copy %%a+sapcebr.txt %%a
rem 按照子系统遍历并合并文件
FOR /F "tokens=1,2* delims= " %%i in (myfile.txt) do copy .\%%i\table\*.tab+sapcebr.txt .\%%i_tab.sql
FOR /F "tokens=1,2* delims= " %%i in (myfile.txt) do copy .\%%i\sp\*.prc+sapcebr.txt .\%%i_sp.sql
FOR /F "tokens=1,2* delims= " %%i in (myfile.txt) do copy .\%%i\view\*.vw+sapcebr.txt .\%%i_view.sql
FOR /F "tokens=1,2* delims= " %%i in (myfile.txt) do copy .\%%i\view\*.viw+sapcebr.txt .\%%i_view.sql
FOR /F "tokens=1,2* delims= " %%i in (myfile.txt) do copy .\%%i\function\*.fnc+sapcebr.txt .\%%i_fnc.sql
FOR /F "tokens=1,2* delims= " %%i in (myfile.txt) do copy .\%%i\function\*.udf+sapcebr.txt .\%%i_fnc.sql
FOR /F "tokens=1,2* delims= " %%i in (myfile.txt) do copy .\%%i\seq\*.seq+sapcebr.txt .\%%i_seq.sql
FOR /F "tokens=1,2* delims= " %%i in (myfile.txt) do copy .\%%i\seq\*.trg+sapcebr.txt .\%%i_trg.sql
如何把var得到的版本信息字符串赋值给一个变量
可以提取prompt的变量,下面是一个通用的方法:
可以建立一个以下形式的批处理文件,内容可以酌情修改。
::getvar.bat
@if [%1]==[invoke] prompt set %2=%3
@if [%1]==[invoke] goto end
@echo off
%comspec% /c %0 invoke %1 %2>tt.bat
call tt
:end
运行时,加上环境变量名和prompt对应变量值即可,如:
getvar curver $v
这种方法的优点是除了可以获取DOS 版本之外,还可获取prompt提供的其他变量,另外它的临时文件可以运行时产生和删除,即可实现独立程序的运行。