文档库 最新最全的文档下载
当前位置:文档库 › bat常用实例整理-1

bat常用实例整理-1

001 显示1-5
@echo off
for /l %%i in (1,1,5) do @echo %%i
pause
-----------------------------------------------------------------------
002 复制文件夹
拷贝:
在E盘下有文件夹0,创建文件夹1并将0中所有内容拷贝到1中:
@echo off
::创建1文件夹
md E:\1
::拷贝0文件夹所有内容到1文件夹
xcopy E:\0 E:\1 /s

拷贝:
在E盘下有文件夹0,创建文件夹1-5并将0中所有内容拷贝到1-5中:
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%i in (1 1 5) do (
set var=%%i
md E:\!var!
xcopy \0 E:\!var! /s)
pause
-------------------------------------------------------------------
003 批量copy命令 生成bat文件 并运行bat

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%i in (1 1 10) do (
set var=%%i
echo md E:\!var!>>test.bat
echo xcopy \0 E:\!var! /s>>test.bat)
::运行bat文件
test.bat
pause
---------------------------------------------------------------------
004 替换字符串
注E:\0下有文件yy.txt,把其内容中所有的0替换成AAA
@echo off
setlocal enabledelayedexpansion
set fn=E:\0\yy.txt
(for /f "tokens=*" %%i in (%fn%) do (
set s=%%i
set s=!s:0=AAA!
echo !s!))>temp.txt
move /y temp.txt "%fn%"
---------------------------------------------------------------------
005 copy并替换字符串
E:\0下有文件yy.txt,要求拷贝文件夹0到文件夹1,并替换文件夹1中yy.txt内容中所有0为AAA

@echo off
md E:\1
xcopy \0 E:\1 /s

setlocal enabledelayedexpansion
set fn=E:\1\yy.txt
(for /f "tokens=*" %%i in (%fn%) do (
set s=%%i
set s=!s:0=AAA!
echo !s!))>temp.txt

move /y temp.txt "%fn%"
---------------------------------------------------------------------
006 复制多个文件夹 使最后一个文件夹中的某文件 的某内容被替换
E:\0下有文件yy.txt,要求创建文件夹1-5,并拷贝文件夹0到文件夹1-5,替换文件夹5中yy.txt内容中所有0为AAA

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%i in (1 1 5) do (
set var=%%i
md E:\!var!
xcopy \0 E:\!var! /s
)

setlocal enabledelayedexpansion
set fn=E:\!var!\yy.txt
(for /f "tokens=*" %%j in (%fn%) do (
set s=%%j
set s=!s:0=AAA!
echo !s!))>temp.txt
copy /y temp.txt "%fn%"
pause

---------------------------------------------------------------------
007 把文件123456.txt的第16行ws.sendkeys后面“”里面的内容,改成自己的文件名

原文件123456.txt:
set ws = CreateObject("wscript.shell")
ws.run "notepad"
ws.AppActivate "notepad"
wscript.sleep 1000
ws.sendkeys "H"
wscript.sleep 100
ws.sendkeys "e"
wscript.sleep 100
Ws.SendKeys "l"
wscript.sleep 100
Ws.SendKeys "l"
wscript.sleep 100
Ws.SendKeys "e"
wscript.sleep 100
Ws.SendKeys "o"
ws.sendkeys "1930000000"
wscript.sleep 100
ws.sendkeys "{Enter}"

-------------
bat文件
@echo off&pushd "e:\文件\"
for /f "delims=" %%a in ('dir /b *.txt') do (
setlocal enabledelayedexpa

nsion
(for /f "usebackq delims=" %%b in ("%%a") do (
set/a n+=1
if "!n!"=="16" (echo ws.sendkeys "%%~na") else echo %%b
))>$
move $ "%%a"&endlocal
)
----------------------------------------------------------------------
008 获取当前路径
@echo off
echo %~dp0
pause


%~dp0 “d”为Drive的缩写,即为驱动器,磁盘、“p”为Path缩写,即为路径,目录
cd是转到这个目录,不过我觉得cd /d %~dp0 还好些

选项语法:

~0 - 删除任何引号("),扩充 %0
%~f0 - 将 %0 扩充到一个完全合格的路径名(“f”是file,即文件)
%~d0 - 仅将 %0 扩充到一个驱动器号
%~p0 - 仅将 %0 扩充到一个路径
%~n0 - 仅将 %0 扩充到一个文件名(“n”是name 文件名)
%~x0 - 仅将 %0 扩充到一个文件扩展名
%~s0 - 扩充的路径只含有短名(“s”为Short,短的)
%~a0 - 将 %0 扩充到文件的文件属性(“a”为attribute,即属性)
%~t0 - 将 %0 扩充到文件的日期/时间(“t”time)
%~z0 - 将 %0 扩充到文件的大小(Size 大小)
%~$PATH:0 - 查找列在路径环境变量的目录,并将 %0 扩充
到找到的第一个完全合格的名称。如果环境变量名
未被定义,或者没有找到文件,此组合键会扩充到
空字符串

可以组合修饰符来得到多重结果:

%~dp0 - 仅将 %0 扩充到一个驱动器号和路径
%~nx0 - 仅将 %0 扩充到一个文件名和扩展名
%~fs0 - 仅将 %0 扩充到一个带有短名的完整路径名
%~dp$PATH:0 - 查找列在路径环境变量的目录,并将 %I 扩充
到找到的第一个驱动器号和路径。
%~ftza0 - 将 %0 扩充到类似输出线路的 DIR

%0为当前批处理文件
如果0换成1为第一个文件,2为第2个
-----------------------------------------------------------------------
009 在E盘文件夹1文件夹2中分别创建10个文件夹,1-10

::在E盘文件夹1文件夹2中分别创建10个文件夹,1-10。
@echo off
for %%i in (1 2) do (
cd/d E:\%%i
for /l %%a in (1 1 10) do md %%a
)
-----------------------------------------------------------------
010 将temp.txt分别拷贝到E盘文件夹1的yy.txt和文件夹2中的yy.txt中
@echo off
for %%i in (1 2) do (
copy temp.txt E:\%%i\yy.txt
)
pause
----------------------------------------------------------------
011 复制N个文件,命名为 1-N,如复制2个文件,分别命名为1 2
@echo off
for /l %%i in (1 1 2) do (
copy E:\0\yy.txt E:\%%i.txt
)
pause
-----------------------------------------------------------------
012 【LR批量更改脚本】如何批量复制文件夹,并且将文件夹中的指定的某文件中的指定某字段更改为文件 夹的名字。

问题描述:

该脚本适合用户LR脚本中要生成多个相同脚本,但用户参数不同的情况,
使用时先在数据库中插入规则的序列为用户名,然后规则的更改脚本中的用户参数,达到压力脚本生成的目的】
具体有文件夹“0”,该文件夹下有多个文件,其中一个为action.txt,
内容如下:
1111111111
22222222222
user='0'
4444444
555555555
666666666
要求复制多个文件夹,名称分别为1 2 3 4.。。
相应的文件夹中action.txt中user为 user='1' user='2' user='3' user='4'.。。


问题解决:
运行是将test文件夹放到E盘,双击copy1.bat


///******请运行copy1.bat********////////
-------------------
copy1.bat
为复制2个文件夹
---------------------
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /l %%i in (1 1 2) do (
set var=%%i
md E:\test\!var!
xcopy E:\test\0 E:\test\!var! /s
)
copy2.bat
pause
---------------------
copy2.bat
为复制2个文件
---------------------
@echo off
for /l %%i in (1 1 2) do (copy E:\test\0\yy.txt E:\test\%%i.txt )
copy3.bat
pause
---------------------
copy3.bat
为修改2文件第三行内容为文件名
---------------------
@echo off
for /f "delims=" %%a in ('dir /b *.txt') do (
setlocal enabledelayedexpansion
(for /f "usebackq delims=" %%b in ("%%a") do (
set/a n+=1
if "!n!"=="3" (echo %%~na) else echo %%b
))>$
move $ "%%a"&endlocal
)
copy4.bat
---------------------
copy4.bat
将文件分别按文件名拷贝到文件夹的yy.txt中
---------------------
@echo off
for %%i in (1 2) do (
copy %%i.txt E:\test\%%i\yy.txt
)
copy5.bat
---------------------
copy5.bat
为删除不需要的文件
---------------------
@echo off
for %%i in (1 2) do (
del %%i.txt
)
pause
---------------------------------------------------------------------------------------
013 创建以日期为名的文件夹

@echo off
set "Ymd=日期%date:~,4%%date:~5,2%%date:~8,2%"
md %ymd%
::copy /y E:\Anan\*.log E:\Anan\%ymd%\
pause


第一句为建立一个变量,并通过%date:~5,2%来组合得出当前日期,组合的效果为yyyymmdd,date命令得到的日期格式默认为yyyy-mm-dd(如果不是此格式可以通过pause命令来暂停命令行窗口看通过%date:~,20%得到的当前计算机日期格式),所以通过%date:~5,2%即可得到日期中的第五个字符开始的两个字符,例如今天为2009-02-05,通过%date:~5,2%则可以得到02。(日期的字符串的下标是从0开始的)
第二句为用MD命令 建立以变量Ymd为名的文件夹
第三句为复制指定的文件到指定的文件夹。
----------------------------------------------------------------------------------------
014 文件按创建时间显示
@echo off
set p=E:\新建文件夹
for /f "delims=" %%i in ('dir %p% /a-d /b /od /tc') do echo %%i
pause

按文件类型列出文件
dir /o控制dir排序和显示目录和文件名的顺序.如

果省略/o,
dir将按他们在目录中出现的顺序显示.如果在没指定"SortOrder"而使用/o,
dir显示按字母顺序排列:
sortorder
n按名称字母 e按扩展名字母 d按时间和日期 s按大小 g在文件之前分组的目录
--------------------------------------------------------------------------------------------
015 显示文件夹名称

显示文件夹名称
@echo off
dir/ad/b
pause

-----------
将该目录下的文件夹名按创建顺序写入1.txt中
@echo off
dir/ad/b /od>>1.txt
pause
------------------------------------------------------------------------------------------
016 显示文件最后一行
@echo off
::将该文件夹内的文件夹按创建时间排序,写入1.txt
dir/ad/b /od>>1.txt
::取1.txt最后一行,并显示
for /f "delims=" %%i in ('type 1.txt') do set a=%%i
echo 最后一行:%a%
pause
--------------------------------------------------------------------------------------------
017 【备份工作日志】
要求:将文件夹“工作日志”中最近创建的文件夹拷贝,命名为“工作日志-今天日期”

@echo off
dir E:\工作日志 /ad/b /od>>文件夹目录.txt
for /f "delims=" %%i in ('type 文件夹目录.txt') do set a=%%i
echo 最后一行:%a%
set "Ymd=工作日志-%date:~,4%%date:~5,2%%date:~8,2%"
md %ymd%
xcopy E:\工作日志\%a% E:\工作日志\%ymd%\ /s
del 文件夹目录.txt
pause
------------------------------------------------------------------------------------------------
018 创建文件夹快捷方式
将当日创建的文件夹,生成快捷,并将快捷方式移到桌面:

echo start "" "E:\工作日志\工作日志-%date:~,4%%date:~5,2%%date:~8,2%">工作日志-快捷.bat
move /y 工作日志-快捷.bat "C:\Users\Q\Desktop"
===================================================================================================
@echo off
rem 创建文件夹的快捷方式>"C:\Users\Q\Desktop\工作日志-快捷.url"
echo [InternetShortcut]>>"C:\Users\Q\Desktop\工作日志-快捷.url"
echo URL="E:\工作日志\工作日志-20120723">>"C:\Users\Q\Desktop\工作日志-快捷.url"
echo IconIndex=4>>"C:\Users\Q\Desktop\工作日志-快捷.url"
echo IconFile=C:\Windows\system32\imageres.dll
------------------------------------------------------------------------------------------------
019 删除过期的文件

@echo off
::功能:删除指定路径下指定天数之前(以文件的最后修改日期为准)的文件
rem 指定待删除文件的存放路径(兼容含有空格的文件夹)
set SrcDir=F:\test
rem 指定天数
set DaysAgo=20
forfiles /p "%SrcDir%" /s /m *.* /d -%DaysAgo% /c "cmd /c del /f /q /a @path"
pause

相关文档