【2015-7-8】
批处理(Batch),也称为批处理脚本。
书写:Running-notepad,save -*.bat
运行:双击bat文件或者拖到cmd中运行。
常用命令:echo,@,goto,pause,call,start,rem ::,if,set,setlocal,shift,for,通配符(*,?),管道符(|),
重定向符(<,>,>>)等
资料:G:\0h_study_com2015\201507月 批处理\
1-视频学习
1.批处理入门(一)
2.批处理入门(二)
3.批处理入门(三)
4.批处理之telnet
5.批处理之DHCP(一)
6.批处理之DHCP(二)
7.批处理之DHCP(三)
8.批处理之Web(一)
9.批处理之Web(二)
10.批处理之Web(三)
11.批处理之Web(四)
12.批处理之DNS (一)
13.批处理之DNS (二)
14.批处理之AD(一)
15.批处理之AD(二)
16.批处理之CA(一)
17.批处理之CA(二)
18.经典的批处理
2-for语句的学习.doc
大纲
一 前言
二 for语句的基本用法
三 for /f (delims、tokens、skip、eol、userbackq、变量延迟)
四 for /r (递归遍历)
五 for /d (遍历目录)
六 for /l (计数循环)
3-Windows批处理高级教程精选.pdf
----------------------
【代码】
1. HelloWorld.bat
@echo off
echo hello world
echo 当前时间是:
date /t
echo 程序结束。
pause
2.goto语句.bat
@echo off
echo goto语句演示程序
echo 开始了。
goto last
echo 这句话不显示
:last
echo goto过来的语句。
echo HelloWorld!
pause
3.call命令.bat
@echo off
echo 1-这是call演示程序
echo 2-=====================
call testDemo.bat
echo 3-===================
echo 4-call与goto的区别
call :label
echo 在goto中这句是不显示的
:label
echo 控制流程调用命令
echo 演示结束
:label2
echo number2
echo byebye
pause
4.if命令.bat
@echo off
echo 4-if命令演示
echo ********************
if exist a.txt (echo 存在a.txt这个文本文件
)else (echo 不存在a.txt这个文件)
echo ****************
if not exist f:\2.py (echo 不存在f:\2.py
)else (echo 存在文件)
echo ****************
if 5==6 (echo 5和6是相等的
)else (echo 5和6是不相等的)
pause
5.for命令.bat
@echo off
echo 5-for语句
echo ***************************
set /a sum=0
for %%x in ("D:\123 456\*.txt") do (
echo %%x文件的内容如下:
type "%%x"
echo.
rem "echo."表示换行的意思
set /a sum=sum+1
echo ***********************
)
echo 共显示了%sum%个文本文件
pause
6.shift命令.bat
@echo off
echo 6-shift命令
echo ************************
:round
if "%1"=="" goto end
echo %1内容如下:
type "%1"
echo.
shift
goto round
:end
echo ******end**************
pause
7.setlocal.bat
@echo off
echo 7-setlocal
echo **************************
set path
echo 对path进行更改.....
setlocal
rem 相当于标志局部变量的开始
path="D:\"
echo 下面显示局部变量以path开头的值
set path
endlocal
rem 相当于局部变量的结束
echo 显示系统环境变量path的值,可以看到并未被改变
set path
echo *****************************
8.通配符.bat
@echo off
echo 8-通配符
echo *************************
if exist \*.txt (echo 当前目录下有文本文件
)else (echo 当前目录下没有文本文件)
echo.
echo 以M开头的 目录如下:
dir /d /b /w d:\M*
echo.
echo 以7-开头,接下来的字符为任意值(一个或多个),拓展名为3个字符,且以tx开头的文件如下:
dir /b /w d:\*.mp?
echo *************************
9.重定向符号.bat
@echo off
echo 9-重定向符
echo *************************
echo 下面是即将写进去的内容:
echo echo 这是自动创建的批处理文件>hxx_auto.bat
echo type a.txt>>hxx_auto.bat
echo dir /w /b >>hxx_auto.bat
::echo a test ntoe >>hxx_auto.bat
rem 上面那句是注释
echo =====================
echo 被自动创建的hxx_auto.bat文件内容如下:
type hxx_auto.bat
echo =====================
echo 排序后的hxx_auto.bat为:
sort<hxx_auto.bat
10.管道符.bat
@echo off
echo 10-管道符
echo ************ “|”************
find "Love" test.txt |sort>result.txt
echo 对包含单词“Love”单词的行进行排序,结果如下:
type result.txt
pause
用过的.bat 备忘
1.带选择的批处理
@echo off
:start
cls
ECHO ================================
ECHO 请选择要进行的操作,然后按回车
ECHO ————————————————
echo 测试…………1
echo.
echo 试验…………2
echo.
echo 验证…………3
echo.
echo 退出…………4
echo.
set /p UserSelection=输入您的选择:
if not "%UserSelection%"=="1" (
if not "%UserSelection%"=="2" (
if not "%UserSelection%"=="3" (
if not "%UserSelection%"=="4" (
pause
goto start
))))
set b=%1
if "%UserSelection%"=="1" (
echo 测试
pause
goto start
)
if "%UserSelection%"=="2" (
echo 试验
pause
goto start
)
if "%UserSelection%"=="3" (
echo 验证
pause
goto start
)
if "%UserSelection%"=="4" (
exit
)
2.菜单处理
@echo off
title 简单的批处理
echo.--------------菜单项--------------
echo.--------1.请输入数字 1 并按回车,指令一。
echo.--------2.请输入数字 2 并按回车,指令二。
echo.--------3.请输入数字 3 并按回车,指令二。
echo.--------4.请输入其他字符,退出程序。
set num=
echo 请选择你要执行的操作:
set /p num=
if %num%=="1"(
echo Hello World 11111
)
if "%num%"=="2"(
echo Hello World 2222
)
if "%num%"=="3"(
echo Hello World 3333
)
echo.你输入了%num%字符,批处理自动退出
echo *******************************
pause
3.递归查找文件
@echo off
set sPath=f:\
for /r %sPath% %%i in (*.txt) do (
echo %%i>>c:\test20151103.txt
)
echo 操作已完成。
pause
4.遍历所有文件
@echo off
set my_path=E:\test
e: ::不加这句就会遍历整个E:盘。 或遍历整个cdef
cd %my_path%
rem 遍历所有文件
for /r %%a in (.,*) do ( echo %%a )
pause
一个小例子
例如:把D:\first\second\users文件夹下的txt(还有jpg,pdf等)文件抽取到E:盘下,并保持目录结构不。也就是E:\first\second\user\*.txt的这样效果。
@echo off
for /r "D:\first\second\users" %%i in (*.txt *.jpg *.pdf) do (
if not exist "E:%%~pi" md "E:%%~pi"
copy "%%~i" "E:%%~pnxi"
)
@echo off
set exs=*.txt *.jpg *.pdf
cd/d "D:\first\second\users"
for /r %%i in (%exs%) do (
echo %%i
xcopy/i "%%i" "e:%%~pi">nul)
pause
另一个小例子
这个批处理能够遍历当前文件夹下的所有后缀为.dll的文件,然后还要对该文件执行某种操作,这一操作又是由另一个命令行程序提供,例如该程序叫做ABC.exe, 命令参数是-r 文件名,就是要对每个文件执行 ABC.exe -r dll文件名,请问该如何写?
伪代码就是:
foreach dll in thisFolder.DllFiles
ABC.exe -r dll
@echo off
for /f "tokens=*" %%i in ('dir/s/b *.dll') do "abc.exe" -r "%%i"
【2015-11-2】
del 是用来删除文件的,删除文件夹的命令是rd
========================
比如我要删除d:\abc\a.txt这个文件,和d:\abc这个文件夹
就是这个命令:
del d:\abc\a.txt
删除文件夹呢,就是:
rmdir /q /s d:\abc
当然一些特殊情况要修改属性才能删,比如指定文件,又需要的话再说
具体的说,只读文件是不能直接删除的,你要用
attrib -r d:\abc\z.txt
去掉只读属性后才能删除。
DOS命令优先级:dos内部命令*.exe ==》com程序==》exe程序==》批处理文件
执行多条语句:第一条 & 第二条 & 第三条
cd \:回到根目录 cd..回到上一层目录 cd [path]
md建目录;rd删除目录(只能删空目录);
copy 源目标文件 目的目标文件 [-y:使用提示]
del 删除文件,不删除目录 /p :使用提示
ren 更名 更名后
rem 或:: 注释
tpye:显示文本文件内容
pause
cls:清屏
%%引用变量: command %variable%
重定向 > >>追加
输入重定向 < :不需从键盘读入数据,从文件
==========未完待续=========
浙公网安备 33010602011771号