中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已解决]根据文件名移动文件的批处理
作者:
标题: [已解决]根据文件名移动文件的批处理 上一主题 | 下一主题
yaoguof
初级用户





积分 90
发帖 35
注册 2006-10-23
状态 离线
『楼 主』:  [已解决]根据文件名移动文件的批处理

在目录下有按照日期创建的文件,如2006-12-21-8***这样的一些文件,请问怎么根据文件名的日期生成一个文件夹,然后把对应日期的文件全部移动到这个文件夹里面

[ Last edited by yaoguof on 2006-12-25 at 03:32 AM ]

2006-12-23 10:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 2 楼』:  

  请问那三个星号代表 后缀名 还是 文件名的一部分+后缀名 ?



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-23 10:54
查看资料  发短消息 网志   编辑帖子  回复  引用回复
yaoguof
初级用户





积分 90
发帖 35
注册 2006-10-23
状态 离线
『第 3 楼』:  

***代表的是文件名的一部分,扩展名都是rar
截取文件名中的日期就可以了。

2006-12-24 05:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 4 楼』:  

  以下为演示代码,如果可行,请将最后两个 echo 去掉。
@echo off
for /f "delims=" %%i in ('dir /a-d /b *.rar') do call :copy_ "%%i"
pause
goto :eof

:copy_
set var=%1
echo md %var:~1,10% 2>nul
echo copy %1 %var:~1,10%
goto :eof


   此帖被 +8 点积分       点击查看详情   
评分人:【 ccwan 分数: +7  时间:2006-12-24 05:29
评分人:【 yaoguof 分数: +1  时间:2006-12-25 03:33




尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-24 05:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 5 楼』:  

这个call我还是没有学会~~~>_<~~~



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-24 05:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
namejm
荣誉版主

batch fan


积分 5226
发帖 1737
注册 2006-3-10
来自 成都
状态 离线
『第 6 楼』:  

  call 可以调用一个程序或者批处理内部的某些标签段(或者理解为子过程)。调用程序的时候,调用完毕,会执行下一条语句;调用标签段的时候,要注意要用 goto :eof 来跳出调用,此时的 goto :eof 不能用 exit 来替换,更不能在批处理内部定义 :eof 标签段。

  call 调用的时候,最让人动心的功能是可以带形参,格式为 call 标签名 参数1 参数2 ……,这些参数你可以任意赋值(不管它在被调用的标签段中是否有用),一般是以空格或逗号作为两个参数之间的分隔符。



尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
2006-12-24 06:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ccwan
金牌会员




积分 2725
发帖 1160
注册 2006-9-23
来自 河北廊坊
状态 离线
『第 7 楼』:  


call 调用的时候,最让人动心的功能是可以带形参,格式为 call 标签名 参数1 参数2 ……,这些参数你可以任意赋值(不管它在被调用的标签段中是否有用),一般是以空格或逗号作为两个参数之间的分隔符
呵呵,就是这个用不好。



三人行,必有吾师焉。   学然后知不足,教然后知困,然后能自强也。
2006-12-24 06:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 8 楼』:  

'可以把当前目录下的所有RAR文件保存到以创建日期命名的文件夹里。(VBS)
Set WshShell = WScript.CreateObject("WScript.Shell")
set fso=createobject("scripting.filesystemobject")
on error resume next
set folder=fso.getfolder(WshShell.CurrentDirectory)
set files=folder.files
for each file in files
if lcase(fso.GetExtensionName(file)) ="rar" then
rq=File.DateLastModified
a=instrrev(rq," ")
if fso.folderexists(left(rq,a-4)) then
fso.movefile file, left(rq,a-4) & "\"
else
fso.createfolder (left(rq,a-4))
fso.movefile file, left(rq,a-4) & "\"
end if
else
end if
next
msgbox "已经将所有RAR文件保存以创建日期命名的文件夹中。",48+4096,"操作完成"
[ Last edited by jmz573515 on 2006-12-26 at 09:50 AM ]

   此帖被 +5 点积分     点击查看详情   
评分人:【 lxmxn 分数: +4  时间:2006-12-24 08:50
评分人:【 yaoguof 分数: +1  时间:2006-12-25 03:33


2006-12-24 08:30
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 9 楼』:  


  不错~

  现在我们要这样:  一个问题,多种脚本(方法)来解决。


2006-12-24 08:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
yaoguof
初级用户





积分 90
发帖 35
注册 2006-10-23
状态 离线
『第 10 楼』:  

谢谢楼上的兄弟的回复,代码可以执行!可以达到预想的效果
太崇拜了哈

2006-12-25 03:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: