赞
踩
比如有这样的需求,文件夹A目录下存在很多文件,这些文件的文件名格式类似,只是自带的时间不同;当我们需要将这些文件中文件名最大的那个文件拷贝到文件夹B目录下
@echo 把调试给关了,如果需要调试,则改为on @echo off @echo 设置文件夹的源路径和目标路径 set SrcPath="E:\1\" set DesPath="E:\3\" @echo 设置本地为延迟扩展。当使用for循环以及即使改变变量值的时候用到 setlocal enabledelayedexpansion @echo 到源文件目录下,找到文件名最大的文件名,并记录到变量varSrcName中 cd %SrcPath% set varSrcName=null @echo 在这个目录中找到文件名前缀为tabsdg,后缀为txt的文件名 for /F %%i in ('Dir tabsdg*.txt /B') do ( if !varSrcName!==null ( set varSrcName=%%i ) else ( @echo 如果文件名比当前文件名小的时候 if !varSrcName! LSS %%i ( set varSrcName=%%i ) ) ) @echo 到目标文件目录下,找到文件名最大的文件名,并记录到变量varDesName中 cd %DesPath% set varDesName=null for /F %%j in ('Dir tabsdg*.txt /B') do ( if !varDesName!==null ( set varDesName=%%j ) else ( if !varDesName! LSS %%j ( set varDesName=%%j ) ) ) @echo 比较两个文件名,如果最大目标文件名比最大的源文件名小,则拷贝新的文件 if !varDesName! LSS !varSrcName! ( copy %SrcPath%%varSrcName% %DesPath% ) pause
比如我们将以上内容拷贝到任意txt中,然后将txt改名为a.bat,直接双击运行就行了。
假设我们有很多bat要运行,我们可以写一个run.bat,内容为
@echo 运行与run.bat同目录下的a.bat
call a
call b
这样就可以直接双击run.bat一个文件就可以执行所有的任务。
例:
比如我们有个这样的需求,我们需要先将某个zip文件拷贝到指定目录,然后将这个zip文件解压,再将解压后的所有文件拷贝到另一个指定目录
set fileName=test
xcopy C:\Test\%fileName%.zip E:\Test1\ /s/d/y
:要调用解压的工具,需要先装一个rar工具
set "rar=D:\Program Files\WinRAR\WinRAR.exe"
:"%rar%" x -ad -y %fileName%.zip .\
:这里需要等待60S,目的是为了等待这个解压的过程完成,批处理会直接运行后面的过程,如果这个解压的过程没有完成,那么后续所依赖这个解压的过程就无法正确完成
timeout /t 60
xcopy .\%fileName%\ E:\Test2 /e /s /y
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。