bat命令⽂件操作
在做空间数据处理(切⽚、栅格、⽮量等)的时候,数据量总是庞⼤的,有时候⼜不想开⼀个专门的程序执⾏⼤量、重复的⽂件操作,windows本⾝⾃带的bat命令是个很好的选择(简单,处理速度快)。
1 dir  该命令可以获取某个⽂件夹下所有的⽂件名及扩展
dir                  #显⽰当前⽬录中的⽂件和⼦⽬录
dir /a                #显⽰当前⽬录中的⽂件和⼦⽬录,包括隐藏⽂件和系统⽂件
dir c: /a:d          #显⽰ C 盘当前⽬录中的⽬录
dir c: /a:-d          #显⽰ C 盘根⽬录中的⽂件
dir c: /b/p          #/b只显⽰⽂件名,/p分页显⽰
dir  *.exe /s          #显⽰当前⽬录和⼦⽬录⾥所有的.exe⽂件
2 cd  该命令⽤于进⼊当前⽂件夹,以便执⾏程序或其他操作
cd                  #进⼊根⽬录
cd                    #显⽰当前⽬录
cd /d d:\sdk          #可以同时切换盘符和⽬录
3 md  该命令⽤于创建⽂件或⽂件夹
md d:\a\b\c          #如果 d:\a 不存在,将会⾃动创建中级⽬录
#如果命令扩展名被停⽤,则需要键⼊ mkdir \a\b\c。
4 rd  该命令⽤于删除⽂件夹相关内容,⽐单⼀的del 删除⽂件操作权限⼤
rd abc                #删除当前⽬录⾥的 abc ⼦⽬录,要求为空⽬录
rd /s/q d:\temp      #删除 d:\temp ⽂件夹及其⼦⽂件夹和⽂件,/q安静模式
5 del 删除⽂件
del d:\      #删除指定⽂件,不能是隐藏、系统、只读⽂件
del /q/a/f d:\temp\ *.*
删除 d:\temp ⽂件夹⾥⾯的所有⽂件,包括隐藏、只读、系统⽂件,不包括⼦⽬录
del /q/a/f/s d:\temp\ *.*
删除 d:\temp 及⼦⽂件夹⾥⾯的所有⽂件,包括隐藏、只读、系统⽂件,不包括⼦⽬录交强险赔付
1) 删除⼀个⽂件或多个⽂件
del /s /q /f d:\test\a.bat绿车牌
将直接删除d:\test\a.bat,没有任务提⽰
del temp\* /q /f /s
将直接删除本⽬录的 temp ⽬录的所有⽂件,没有任务提⽰
删除⽂件的时候可以使⽤“*”作通配符
2) 删除⼀个空⽬录
rd /q /s  d:\test\log
将直接删除d:\test\log⽬录,如果log⽬录⾥⾯有⽂件将⽆法删除
3) 删除⼀个⾮空⽬录 (必须指定⽬录名称)
rmdir /q /s d:\test\logs
必须指定⽬录名称,不能使⽤通配符
/S  除⽬录本⾝外,还将删除指定⽬录下的所有⼦⽬录
/Q  安静模式,带 /S 删除⽬录树时不要求确认
⽆论⾥⾯是否有⽂件或⽂件夹将全部直接删除
6 copy  拷贝⽂件
copy c:\ d:\test.bak
7 xcopy 拷贝⽂件,外部命令
xcopy d:\mp3 e:\mp3 /s/e/i/y
复制 d:\mp3 ⽂件夹、所有⼦⽂件夹和⽂件到 e:\,覆盖已有⽂件
加 /i 表⽰如果 e:\ 没有 mp3 ⽂件夹就⾃动新建⼀个,否则会有询问
8pause 暂停命令
pause 暂停执⾏,按任意键继续。。。。。。
Sample:
@echo off
:begin
copy a:\ *.* d:\back
echo Please put a new disk into driver A
pause
9 find  查命令
find "abc" c:\
在 c:\ ⽂件⾥查含 abc 字符串的⾏
如果不到,将设 errorlevel 返回码为1
find /i “abc” c:\
查含 abc 的⾏,忽略⼤⼩写
find /c "abc" c:\
显⽰含 abc 的⾏的⾏数
字符串处理
1) 分割字符串,以查看时间为例
%源字符串:~起始值,截取长度%  (起始值从0开始;截取长度是可选的,如果省略逗号和截取长度,将会从起始值截取到结尾;
截取长度如果是负数,表⽰截取到倒数第⼏个。)
"%time%"      显⽰如:"11:04:23.03" (完整的时间"hh:")
"%time:~0,5%" 显⽰"hh:mm"(即"11:04"),其中0表⽰从右向左移位操作的个数,5表⽰从左向右移位操作的个数      "%time:~0,8%" 显⽰标准时间格式"hh:mm:ss"(即"11:04:23",前8个字符串)
"%time:~3,-3%"显⽰"mm:ss"(即从第4个开始,截去最后3个的字符串)
"%time:~3%"  显⽰"04:23.03"(即去掉前4个字符串)
"%time:~-3%"  显⽰".tt"(即最后3个字符串)
上⾯的字串分割格式,也可以⽤于其它地⽅,如⽬录路径:"%cd:~0,10%"
10 pushd 和 popd 切换当前⽬录
@echo off中国飞机失事事件有几次
c: & cd & md mp3        #在 C:\建⽴ mp3 ⽂件夹
md d:\mp4                #在 D:\ 建⽴ mp4 ⽂件夹
cd /d d:\mp4              #更改当前⽬录为 d:\mp4
pushd c:\mp3              #保存当前⽬录,并切换当前⽬录为 c:\mp3
popd                      #恢复当前⽬录为刚才保存的 d:\mp4
11start  外部调⽤程序命令
批处理中调⽤外部程序的命令,否则等外部程序完成后才继续执⾏剩下的指令
12 set 设置命令
设置变量
引⽤变量可在变量名前后加 % ,即 %变量名%
set    #显⽰⽬前所有可⽤的变量,包括系统变量和⾃定义的变量
13 > 和 >> 输出从定向命令
输出重定向命令
> 清除⽂件中原有的内容后再写⼊
>> 追加内容到⽂件末尾,⽽不会清除原有的内容
主要将本来显⽰在屏幕上的内容输出到指定⽂件中
指定⽂件如果不存在,则⾃动⽣成该⽂件
type c:\ >prn
屏幕上不显⽰⽂件内容,转向输出到打印机
14 | 管道命令
dir *.* /s/a | find /c ".exe"
管道命令表⽰先执⾏ dir 命令,对其输出的结果执⾏后⾯的 find 命令
该命令⾏结果:输出当前⽂件夹及所有⼦⽂件夹⾥的.exe⽂件的个数
type c:\re
这个和 more c:\ 的效果是⼀样的
15 &顺序执⾏多条命令,⽽不管命令是否执⾏成功
16 &&顺序执⾏多条命令,当碰到执⾏出错的命令后将不执⾏后⾯的命令
find "ok" c:\ && echo 成功
清远景点排行榜
如果到了"ok"字样,就显⽰""成功"",不到就不显⽰
17||顺序执⾏多条命令,当碰到执⾏正确的命令后将不执⾏后⾯的命令
find "ok" c:\ || echo 不成功
如果不到"ok"字样,就显⽰"不成功",到了就不显⽰
18 /?help 命令
Sample: type /? >& (把 type 命令的帮助信息写⼊到⽂件⾥)
19echo 打开回显或关闭回显功能
打开回显或关闭请求回显功能,或显⽰消息。如果没有任何参数,echo 命令将显⽰当前回显设置。
踢足球技巧
Sample: echo off
Sample: echo hello world (显⽰出“hello world”)
以上是操作⽂件时常⽤的⼀些命令,常常是⼀句或⼏句编码就可执⾏。⾄于⼀些较为复杂的操作如call if for choise等命令并不常⽤,如果想深⼊了解⼀些系统、⽹络等命令,还是得花⼀番⼼思的,不详述,俺也不会啦%^#%&$@#$@$
copy ⼀份别⼈的好东西,什么时候⽤⽤。
实践部分:
济宁名吃======================================================================
⼀、⼩摘录:
1. 调⽤其他程序时,对⽂件的⼤⼩写不敏感,⽂件后缀也可忽略
如:  与 start leapftp 效果⼀样,都是运⾏“”⽂件
每⾏的开头的字符串会⾃动查程序来运⾏,还可⽤双引号引起来(⽂件名或⽬录名含空格时必须⽤)
如:"D:\Program Files\"
"" 可正常运⾏⽂件,start "" "" 也可以正常运⾏⽂件(注意,第⼀个参数是窗⼝显⽰的标题)
3. copy C:\test\*.* D:\back  (复制C盘test⽂件夹的所有⽂件(不包括⽂件夹及⼦⽂件夹⾥的东西)到D盘的back⽂件夹)
4. dir c:\*.* > a.txt (将c盘⽂件列表写⼊ a.txt 中)
5.  > ⽣成⽂件并写⼊内容(如果有这⽂件则覆盖),  >> ⽂件⾥追加内容
6. md d:\aa (创建⽂件夹)
7. 在命令末尾加上“>NUL 2>NUL”,表⽰隐蔽返回信息。
8. 等待⽤户输⼊: set /p 变量名=屏幕显⽰信息。  Sample:set /p pass=请输⼊密码:
9. 让⽤户按回车退出
⼩技巧(替代pause),⽂件的最后⼀句:set /p tmp=操作结束,请按回车键退出...
10.设置标题: title JDK安装
11.设置屏幕显⽰颜⾊,如绿⾊: color 0a
12.清屏: cls
13.查看⾃⼰的IP:
for /f "tokens=15" %%i in ('ipconfig ^| find /i "ip address"') do set ip=%%i
echo %ip% (这时的 %ip% 就是⾃⼰的IP地址)
14. 修改⽂件的更新⽇期
copy ⽂件名+,,>nul  (修改为当前时间,如果要修改为指定时间,先修改系统时间,再改回系统时间)
15. 修改⽂件的后缀名
ren C:\test\*.jpg *.JPG
for /r %%c in (*.jpg) do (ren %%c *.JPG)  :: 修改当前⽬录下的所有⽂件的后缀名,包括⼦⽬录的
16. 修改⽂件的⽂件名
rename test.jpg test2.JPG
rename *.jpg *.888.JPG
17. 查看DNS、IP、Mac等
1) Win98: winipcfg
2) Win2000以上: Ipconfig /all
3) NSLOOKUP
18.查看IP上的共享资源,就可以
net view 192.168.10.8
net view 192.168.10.8
19.共享
A.查看你机器的共享资源: net share
B.⼿⼯删除共享
net share 共享资源名称$ /d
注意$后有空格。
C.增加⼀个共享:
net share mymovie=e:\downloads\movie /users:3
mymovie 共享成功。同时限制链接⽤户数为3⼈。
20.打开某⽹站
www.baidu
⼆、实例:
1. ⽣成 reg ⽂件,运⾏它,再删除它
echo "更改windows安装⽂件的路径"
echo Windows Registry Editor Version 5.00 > c:\
echo [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup] >> c:\
echo "ServicePackSourcePath"="D:\\Win2003\\" >> c:\
echo "SourcePath"="D:\\Win2003\\" >> c:\
:: 写⼊注册表
regedit /S c:\
:: 删除注册表⽂件
del c:\
2.调⽤了exe⽂件,结束后没有关闭,解决⽅式
⽤start命令运⾏⽂件,如:
192.168.0.100
3.设置系统环境变量
:: 有这个环境变量,则不需再设置,直接结束
if not "%JAVA_HOME%" == "" exit
:: 设置环境变量的地址
set inputJavaHome=%cd%\jdk1.6.0_07
:: 设置环境变量,也可以设置当前⽤户的变量
set EnvironmentHome=HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment      echo 正在设置环境变量,请稍候......
reg add "%EnvironmentHome%" /v JAVA_HOME /t reg_sz /d "%inputJavaHome%" /f
reg add "%EnvironmentHome%" /v ClassPath /t reg_sz /d ".;%%JAVA_HOME%%\lib" /f
reg add "%EnvironmentHome%" /v Path /t reg_sz /d "%%JAVA_HOME%%\bin;%Path%" /f]
:: 刷新,令环境变量⽣效
taskkill /f / >nul
start "" ""
4.隐藏某⽬录的所有⽂件及⽂件夹
cd /d 要隐藏的⽬录(如:D:)
for /f "usebackq delims=" %%A in (`dir /a /b`) do (attrib "%%A" -r +h -s)
5.在批处理中使⽤密码。密码为admin,输⼊正确,跳转到next1 ,若输⼊密码错误3次,则锁屏。。
@echo off
set num=0
:11
set /p pass=请输⼊密码:
if "%pass%"=="admin" goto next1
set /a num=%num% + 1
if %num%==3 goto no1
goto 11
:no1
%windir%\ user32.dll,LockWorkStation
goto 11
:next1
echo 密码正确,执⾏下⾯的程式
pause
6.清空回收站(未成功)
@echo off