批处理Bat-拷贝文件

比如有这样的需求,文件夹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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值