如何建立一个这样的批处理,把每天最新的备份文件根据文件夹名拷出。
假如D盘有多个文件夹,分别为d:\ABC,d:\DEF,d:\GHI...文件夹名无规律。ABC文件夹下有备份文件a.bak,b.bak,c.bak...DEF文件夹下有...
假如D盘有多个文件夹,分别为d:\ABC,d:\DEF, d:\GHI... 文件夹名无规律。
ABC文件夹下有备份文件a.bak,b.bak,c.bak ...
DEF文件夹下有备份文件d1.bak,d2.bak,d3.bak ... 文件名均无规律
现在我想把每个文件夹(ABC,DEF...)下的最新文件拷到一个新建的BACKUP文件夹里,并以文件夹的名字命名。
比如ABC下的最新文件是D:\ABC\a.bak,现在拷到BACKUP下,并用父文件夹ABC的名称将a.bak重命名为ABC.bak,同样DEF文件夹下最新文件D:\DEF\d1.bak拷到BACKUP下并用父文件夹名称把它重命名为DEF.bak ... 展开
ABC文件夹下有备份文件a.bak,b.bak,c.bak ...
DEF文件夹下有备份文件d1.bak,d2.bak,d3.bak ... 文件名均无规律
现在我想把每个文件夹(ABC,DEF...)下的最新文件拷到一个新建的BACKUP文件夹里,并以文件夹的名字命名。
比如ABC下的最新文件是D:\ABC\a.bak,现在拷到BACKUP下,并用父文件夹ABC的名称将a.bak重命名为ABC.bak,同样DEF文件夹下最新文件D:\DEF\d1.bak拷到BACKUP下并用父文件夹名称把它重命名为DEF.bak ... 展开
3个回答
展开全部
用批处理 麻烦
写个autoit脚本 简单
#include <file.au3>
$folder = FileSelectFolder("请选择主文件夹","")
$bakup = FileSelectFolder("请选择BACKUP文件夹","",1)
$subfolder = _FileListToArray($folder,"*",2)
For $i = 1 To $subfolder[0]
$filelist = _FileListToArray($folder&"\"&$subfolder[$i],"*",1)
$filetime = $filelist
For $j = 1 To $filelist[0]
$filetime[$j] = FileGetTime($folder&"\"&$subfolder[$i]&"\"&$filelist[$j],1,1)
Next
$maxtime = $filetime[1]
$max = 1
For $j = 2 To $filetime[0]
If StringCompare($filetime[$j],$maxtime)>0 Then
$maxtime = $filetime[$j]
$max = $j
EndIf
Next
FileCopy($folder&"\"&$subfolder[$i]&"\"&$filelist[$max],$bakup&"\"&$subfolder[$i]&".bak")
Next
写个autoit脚本 简单
#include <file.au3>
$folder = FileSelectFolder("请选择主文件夹","")
$bakup = FileSelectFolder("请选择BACKUP文件夹","",1)
$subfolder = _FileListToArray($folder,"*",2)
For $i = 1 To $subfolder[0]
$filelist = _FileListToArray($folder&"\"&$subfolder[$i],"*",1)
$filetime = $filelist
For $j = 1 To $filelist[0]
$filetime[$j] = FileGetTime($folder&"\"&$subfolder[$i]&"\"&$filelist[$j],1,1)
Next
$maxtime = $filetime[1]
$max = 1
For $j = 2 To $filetime[0]
If StringCompare($filetime[$j],$maxtime)>0 Then
$maxtime = $filetime[$j]
$max = $j
EndIf
Next
FileCopy($folder&"\"&$subfolder[$i]&"\"&$filelist[$max],$bakup&"\"&$subfolder[$i]&".bak")
Next
追问
这..什么语言,要如何运行?看头文件像c,看语法像vb,看变量名像像php.
-------------------
查了下。下了个autoit把你的脚本编译成可执行文件就可以了,感谢。但有个问题如果是空文件夹或带子文件夹会出错,提示:
Line 400
Error:Subscript used with non-Array variable.
能不能改下比如把空文件夹带子文件夹的忽略掉。
壹寰(深圳)科技文化有限公司
2021-03-27 广告
2021-03-27 广告
不同公司提供的方案也不一样。以上回答如果还觉得不够详细,可以来咨询下壹寰(深圳)科技文化有限公司。91数据恢复是壹寰(深圳)科技文化有限公司旗下专业数据恢复品牌,91数据恢复专注于勒索病毒数据恢复、勒索病毒数据修复、数据库修复、数据库解密恢...
点击进入详情页
本回答由壹寰(深圳)科技文化有限公司提供
展开全部
@echo off
for /f "tokens=*" %%i in ('dir/b/ad d:\') do (
for /f "tokens=*" %%j in ('dir/od/b "%%~dpnxi"') do set fn=%%~dpnxj
copy "%fn%" “d:\backup\%%~ni.bak"
)
for /f "tokens=*" %%i in ('dir/b/ad d:\') do (
for /f "tokens=*" %%j in ('dir/od/b "%%~dpnxi"') do set fn=%%~dpnxj
copy "%fn%" “d:\backup\%%~ni.bak"
)
更多追问追答
追问
运行提示找不到路径
追答
这样可以了,你试试哪个好用
@echo off
for /f "tokens=*" %%i in ('dir/b/ad d:\') do (
for /f "tokens=*" %%j in ('dir/od/b "%%~dpnxi\*"') do set fn=%%j
copy "%%~dpnxi\%fn%" "e:\test\%%~ni.bak"
)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-09-01
展开全部
这么伤脑筋的批处理,给5分。简单点的,不给分我都可以帮你写了。。。。建议用powershell和其他的编程语言。。批处理做这事挺麻烦。。自己去学下吧。
追问
不好意思啊兄弟,我只剩最后5分了。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询