批处理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一个文件就可以执行所有的任务。

你可能感兴趣的:(批处理Bat)