当前位置:   article > 正文

批处理Bat-拷贝文件_bat copy 要等待吗

bat copy 要等待吗

比如有这样的需求,文件夹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
  • 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

比如我们将以上内容拷贝到任意txt中,然后将txt改名为a.bat,直接双击运行就行了。

假设我们有很多bat要运行,我们可以写一个run.bat,内容为

@echo 运行与run.bat同目录下的a.bat
call a
call b
  • 1
  • 2
  • 3

这样就可以直接双击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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/73414
推荐阅读
相关标签
  

闽ICP备14008679号