【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%

重定向 >  >>追加

输入重定向 < :不需从键盘读入数据,从文件

==========未完待续=========

posted on 2015-12-02 16:15  小刺猬001  阅读(174)  评论(2)    收藏  举报