先晒个代码吧,脚本的意思是为了有选择性的在本地的指定位置为客户建立信息文件、文件夹,之后再自动打开的一套小流程。下面的代码还是有些看头的。
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
@ECHO OFF REM CHOICE /? CHOICE /C 1234 /M "D盘E盘创建文件夹,D盘创建文件夹,E盘创建文件夹,退出" set/p ww=请输入客户名并按回车: REM set NowTime=%time% REM set dt2=%date:~0,4%%date:~5,2%%date:~8,2%.%time:~0,2%%time:~3,2%%time:~6,2% set dt=%date:~2,2%%date:~5,2%%date:~8,2% set name=%dt%-%ww% set dird=D:\%name% set txt=%dird%\%name%.txt set dire=E:\%name% REM if判断语句格式,这里注释掉了,只为观看 REM if %1==1 ( echo %1 )^ REM else ( echo %name% ) REM 暂停 REM pause REM 这里对数值判断需要按从大到小的顺序排列 if errorlevel 4 goto end if errorlevel 3 goto mye if errorlevel 2 goto myd if errorlevel 1 goto myde exit :myde md %dird% md %dire% echo %name% > %txt% start %txt% start %dird% start %dire% goto end :myd md %dird% echo %name% > %txt% start %txt% start %dird% goto end :mye md %dire% start %dire% goto end :end ECHO Good Bye |
@echo off ###关闭 echo 输出 ON 为开启
set /p input=请输入字符串:
echo 您输入的字符串是:%input%
1 建bat文件自动执行复制,删除命令。
例1:以下是复制cd.dll文件至windows\system32的bat文件内容:
copy cd.dll %windir%\system32
例2:下面一行是卸载windows\system32目录中的cd.dll,即把上面复制的文件删除:
del %windir%\system32\cd.dll
例3:删除download文件夹中的文件,例子如下:
del C:\DOWNLOAD\*.*
[注意]:这里的del命令只能删文件,不能删文件夹。要删除文件夹得用rd命令,如下:
rd Filemon
这里filemon文件夹和该bat文件在同一目录下,就省去具体路径了。但rd只能删除空文件夹.
要删除文件夹及其里面的所有子目录和文件,用rd命令带/s /q参数,
/s参数表示删除该文件夹及其下面的子目录和文件
/q参数表示,不需要确认
2 创建文件夹
例:在E:\My documents下面一次创建3个新文件夹:Newfolder1,Newfolder2,Newfolder3
@echo off
md “E:\My documents\Newfolder1″
md “E:\My documents\Newfolder2″
md “E:\My documents\Newfolder3″
3 执行程序,打开文件或目录
例1:打开指定目录,如C:\Test
start C:\Test
例2:执行C盘下的WinWord.exe程序
start C:\WinWord.exe
例3:用某个程序打开某个文件,如用TheWorld.exe打开一个htm文件
start d:\TheWorld\TheWorld.EXE C:\我有一个恋爱.htm
[注意]:不论是程序或文件路径中含有空格,都必须用引号括起来:
start d:\TheWorld\TheWorld.EXE “e:\My documents\我有一个恋爱.htm”
所有程序中的引号不能是全角的,必须用半角的格式,所以输入引号前最好关闭汉字输入系统
4. 拷贝文件夹 XCOPY
XCOPY命令可用于复制文件和目录,包括子目录。 其功能多数是通过增加参数来实现的。
XCOPY source [destination] 参数(如 /s /e)
source 指定要复制的文件。
destination 指定新文件的位置和/或名称。
/A 只复制有存档属姓集的文件,
但不改变属姓。
/M 只复制有存档属姓集的文件,
并关闭存档属姓。
/D:m-d-y 复制在指定日期或指定日期以后改变的文件。
如果没有提供日期,只复制那些源时间
比目标时间新的文件。
/EXCLUDE:file1[+file2][+file3]…
指定含有字符串的文件列表。如果有任何
字符串与要被复制的文件的绝对路径
相符,那个文件将不会得到复制。
例如,指定如 \obj\ 或 .obj 的字符串会排除
目录 obj 下面的所有文件或带有
.obj 扩展名的文件。
/P 创建每个目标文件前提示。
/S 复制目录和子目录,除了空的。
/E 复制目录和子目录,包括空的。
与 /S /E 相同。可以用来修改 /T。
/V 验证每个新文件。
/W 提示您在复制前按键。
/C 即使有错误,也继续复制。
/I 如果目标不存在,又在复制一个以上的文件,
则假定目标一定是一个目录。
/Q 复制时不显示文件名。
/F 复制时显示完整的源和目标文件名。
/L 显示要复制的文件。
/G 允许将没有经过加密的文件复制到
不支持加密的目标。
/H 也复制隐藏和系统文件。
/R 改写只读文件。
/T 创建目录结构,但不复制文件。不
包括空目录或子目录。/T /E 包括
空目录和子目录。
/U 只复制已经存在于目标中的文件。
/K 复制属姓。一般的 Xcopy 会重设只读属姓。
/N 用生成的短名复制。
/O 复制文件所有权和 ACL 信息。
/X 复制文件审核设置(隐含 /O)。
/Y 禁止提示以确认改写一个
现存目标文件。
/-Y 导致提示以确认改写一个
现存目标文件。
/Z 用重新启动模式复制网络文件。
==========================================
==========================================
格式:set 变量名=变量值
详细:被设定的变量以%变量名%引用
[取消变量]
格式:set 变量名=
详细:取消后的变量若被引用%变量名%将为空
[展示变量]
格式:set 变量名
详细:展示以变量名开头的所有变量的值
[列出所有可用的变量]
格式:set
格式:set /a 表达式
示例:set /a 1+2*3
输出 7
!注意!
set不能用在复合语句里面比如if 1==1 set a=2或者for %%i in (a) do set a=2
预定义的变量
下面是些已经被底层定义好可以直接使用的变量:不会出现在 SET 显示的变量列表中
%CD% - 扩展到当前目录字符串。
%DATE% - 用跟 DATE 命令同样的格式扩展到当前日期。
%TIME% - 用跟 TIME 命令同样的格式扩展到当前时间。
%RANDOM% - 扩展到 0 和 32767 之间的任意十进制数字。
%ERRORLEVEL% - 扩展到当前 ERRORLEVEL 数值。
%CMDEXTVERSION% - 扩展到当前命令处理器扩展名版本号。
%CMDCMDLINE% - 扩展到调用命令处理器的原始命令行。
%0 bat的完整路径名如”C:\Windows\system32\xxx.bat”
%1 bat参数1依次类推%2参数2…
%path% - 当前的环境变量。以分号隔开的路径列表,路径可包含空格,可以以’\'结尾, 可以以双引号包围之。
扩展变量
@ 与%i相关的变量(bat参数或者for循环的%i)
假设文件为C:\Documents and Settings\jinsun\桌面\ParseSinglePkgs.bat
%0 当前执行命令行 C:\Documents and Settings\jinsun\桌面\ParseSinglePkgs.bat
%~dp0 当前bat文件路径 C:\Documents and Settings\jinsun\桌面\
%~sdp0 当前bat文件短路径
%cd% C:\Documents and Settings\jinsun\桌面
%~nx0 ParseSinglePkgs.bat
%~n0 ParseSinglePkgs
%~x0 .bat
获取批处理文件所在路径
在开发时,经常需要使用批处理运行一些程序,java程序 犹其是这样,往往需要运行时根路径。Hardcode一个路径总是令自己觉得不自在,例如一个java程序从一台机copy到另外一台机,盘符往往发生变化,先修改一下bat里的路径再运行显然很麻烦。
在批处理开头加入cd /d %~dp0 一行代码就真真实实地做到“编写一次,到处运行”。%0是批处理文件本身的路径,%~dp进行扩展, d向前扩展到驱动器,p往后扩展到路径。例如,你的bat文件在e:/mybat/test.bat,则%0就是e:/mybat/test.bat, %~dp0是e:/mybat/。 /d选项支持CD到不同盘符。
另外,%i提取第i个命令选项,例如%1提取第1个option,i可以取值从1到9
%~0: 取文件名(名+扩展名)
%~f0:取全路径
%~d0:取驱动器名,如:C:
%~p0:只取路径(不包驱动器)
%~n0:只取文件名
%~x0:只取文件扩展名
%~s0:取缩写全路径名
%~a0:取文件属性
%~t0:取文件创建时间
%~z0:取文件大小
以上选项可以组合起来使用。
获取命令行参数
%0,%1,%2,… %9,可以用来引用命令行参数,其中%0表示被执行的bat文件本身,%1~%9表示第1到第9个命令行参数。
如果参数个数超过10个,可以用shift命令左移,这个时候%1表示第二个参数,%9表示第10个参数,一次类推。
比如下面的程序段用来获取完整的命令行参数字符串。(完成此功能一个更好的办法是用%*)
set CMD_LINE_ARGS=
:setArgs
if “”%1″”==”"”" goto doneSetArgs
set CMD_LINE_ARGS=%CMD_LINE_ARGS% %1
shift
goto setArgs
:doneSetArgs
@ 与%VAR%相关的变量
%VAR:str1=str2% 会将VAR中的str1替换为str2(str2如果为空则可以达到删除的效果,str1前可以加*,变量%ABC:*B=%是C)
%VAR:~0,-2% 会提取VAR 变量的所有字符,除了最后两个
%VAR:~-2% 会提取VAR 变量的最后两个
系统变量:
他们的值由系统将其根据事先定义的条件自动赋值,我们只需要调用而已
%ALLUSERSPROFILE% (allusersprofile)本地 返回“所有用户”配置文件的位置。 C:Documents and SettingsAll Users
%APPDATA% (appdata)本地返回默认情况下应用程序存储数据的位置。 C:Documents and SettingsAdministratorApplication Data
%CD% (cd)本地返回当前目录字符串。 C:Documents and SettingsAdministrator桌面
%CMDCMDLINE% (cmdcmdline)本地返回用来启动当前的 Cmd.exe 的准确命令行。 cmd /c “”C:Documents and SettingsAdministrator桌面a.bat” ”
%CMDEXTVERSION%(cmdextversion)系统返回当前的“命令处理程序扩展”的版本号。2
%COMPUTERNAME% (computername)系统返回计算机的名称。 xxxx
%COMSPEC% (comspec) 系统返回命令行解释器可执行程序的准确路径。 C:WINDOWSsystem32cmd.exe
%DATE% 系统返回当前日期。使用与 date /t 命令相同的格式。由 Cmd.exe 生成。有关 date 命令的详细信息,请参阅 Date。
%ERRORLEVEL% (errorlevel) 系统返回上一条命令的错误代码。通常用非零值表示错误。
%HOMEDRIVE% (homedrive)系统返回连接到用户主目录的本地工作站驱动器号。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 C:
%HOMEPATH% (homepath) 系统返回用户主目录的完整路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。 Documents and SettingsAdministrator
%HOMESHARE% (homeshare) 系统返回用户的共享主目录的网络路径。基于主目录值而设置。用户主目录是在“本地用户和组”中指定的。
%LOGONSERVER% (logonserver) 本地返回验证当前登录会话的域控制器的名称 \ xxxx
%NUMBER_OF_PROCESSORS% (numeer_of_processors) 系统指定安装在计算机上的处理器的数目。
%OS% (os)系统返回操作系统名称。Windows 2000 显示其操作系统为 Windows_NT。
%PATH% (path)系统指定可执行文件的搜索路径。
%PATHEXT% (pathext)系统返回操作系统认为可执行的文件扩展名的列表。 .COM .EXE .BAT .CMD .VBS .VBE .JS .JSE .WSF .WSH
%PROCESSOR_ARCHITECTURE% (processor_architecture) 系统返回处理器的芯片体系结构。值:x86 或 IA64 基于Itanium x86
%PROCESSOR_IDENTFIER% (processor_identfier)系统返回处理器说明。
%PROCESSOR_LEVEL% (processor_level)系统返回计算机上安装的处理器的型号。 15
%PROCESSOR_REVISION% (processor_revision)系统返回处理器的版本号。 4f02
%PROMPT% (prompt)本地 返回当前解释程序的命令提示符设置。由 Cmd.exe 生成。$P$G
%RANDOM% (random)系统返回 0 到 32767 之间的任意十进制数字。由 Cmd.exe 生成。 30580
%SYSTEMDRIVE% (systemdrive)系统返回包含 Windows server operating system 根目录(即系统根目录)的驱动器。 C:
%SYSTEMROOT% (systemroot)系统返回 Windows server operating system 根目录的位置。C:WINDOWS
%TEMP%(temp) C:DOCUME~1ADMINI~1LOCALS~1Temp和 %TMP% (tmp)C:DOCUME~1ADMINI~1LOCALS~1Temp系统和用户返回对当前登录用户可用的应用程序所使用的默认临时目录。有些应用程序需要 TEMP,而其他应用程序则需要 TMP。
%TIME% 系统 返回当前时间。使用与 time /t 命令相同的格式。由 Cmd.exe 生成。有关 time 命令的详细信息,请参阅 Time。
%USERDOMAIN% (userdomain)本地返回包含用户帐户的域的名称。 xxxx
%USERNAME% (username)本地返回当前登录的用户的名称。 Administrator
%USERPROFILE% (userprofile)本地返回当前用户的配置文件的位置。 C:Documents and SettingsAdministrator
%WINDIR%(windir) 系统 返回操作系统目录的位置。 C:WINDOWS
=================================