标题: [日期时间] [已解决]使用批处理判断日期单双日操作文件 [打印本页]
作者: junxi0928 时间: 2013-8-30 16:37 标题: [已解决]使用批处理判断日期单双日操作文件
各位大大,我是一名管理员,现在有一个文件夹,里面有公司所有文件的备份,每天都会备份一次之后压缩成一个.RAR格式的文件,并且以日期命名该文件,现在因为要腾出空间来,所以分别对单双日的文件进行移动到不同的地方,请各位大大写一个批处理文件,我对右击复制、粘贴实在是手酸了。感谢各位大大了。。。图片是公司备份的文件,要对日子按单双日分别移动
作者: 林小七 时间: 2013-8-30 19:29
- ::移动文件
- :: By seven
- :: 2013.8.30
- @echo off&&setlocal enabledelayedexpansion
- title Moves By:Seven
- if not exist 单号 md 单号 双号
- for %%a in (*.rar) do (
- set s=%%a
- set s=!s:~6,2!
- call :moves !s! %%a
- )
- @echo.移动完成.....
- pause&&exit
- :moves
- for %%d in (02 04 06 08 10 12 14 16 18 20 22 24 26 28 30) do (
- set now=%%d
- if %1 equ !now! move %2 双号&&goto :eof
- )
- move %2 单号
- goto :eof
复制代码
win7通过~~放到rar文件同一目录运行~~然后生成两个文件夹~~分别是单号双号~~文件已经分类到相应的文件夹里面~~
作者: junxi0928 时间: 2013-8-30 23:06
本帖最后由 junxi0928 于 2013-8-30 23:11 编辑
回复 2# 林小七
感谢技术提供,WIN7测试完美通过,不过在WIN2003上面通用吗?另外,不知道在哪句话上更改,可以将单号或者双号移动到指定位置?麻烦了,可以注明一下吗?
作者: xpw 时间: 2013-8-30 23:19
本帖最后由 xpw 于 2013-8-30 23:24 编辑
- @echo off
- setlocal enabledelayedexpansion
- set d=
- for %%a in (*.rar) do (set d=%%a
- set /a d=!d:~6,2!%%2&call;:_move;!d!;"%%a")
- exit
-
- :_move
- if %1==0 (move %2 double>nul) else move %2 single>nul
复制代码
最后一行的double换成你自己定义的双日期的目录,single换成单日期的目录,目录路径中有空格要用引号括起
作者: 林小七 时间: 2013-8-31 00:15
回复 3# junxi0928
如果是移动文件夹位置的话当然可以了,简单修改下就行,至于win2003没有测试,我得电脑win7,
作者: terse 时间: 2013-8-31 00:42
本帖最后由 terse 于 2013-8-31 11:29 编辑
代码里 SET /a 是否这样处理 否则遇 08 09 处理会出错
还有 直接取!str:~7,1! 也行- @echo off
- setlocal enabledelayedexpansion
- for %%i in (*.rar) do (
- set str=%%i
- set /a str=0x!str:~6,2!%%2
- IF !str! equ 0 (echo 双)else echo 单
- )
复制代码
作者: 林小七 时间: 2013-8-31 09:11
回复 3# junxi0928
你把单号双号修改下成你要存放的目录几好了~
如是d:\备份,你就可以改成这样- @echo off&&setlocal enabledelayedexpansion
- title Moves By:Seven
- for %%a in (*.rar) do (
- set s=%%a
- set s=!s:~6,2!
- call :moves !s! %%a
- )
- @echo.移动完成.....
- pause&&exit
- :moves
- for %%d in (02 04 06 08 10 12 14 16 18 20 22 24 26 28 30) do (
- set now=%%d
- if %1 equ !now! move %2 “D:\备份\双号”&&goto :eof
- )
- move %2 “D:\备份\单号”
- goto :eof
复制代码
作者: junxi0928 时间: 2013-9-2 08:50
回复 4# xpw
感谢大大,但是在WIN2003上面使用不通过,显示拒绝访问,是哪句语法错误了吗?
作者: junxi0928 时间: 2013-9-2 09:10
本帖最后由 junxi0928 于 2013-9-2 09:13 编辑
回复 7# 林小七
谢谢提供,在WIN03上面测试通过!
现在是这样,因为有N个文件夹,所以我需要在每个文件夹下都建立一个批处理
假如我做一个主bat的话,利用主bat运行这些文件夹的批处理,行得通吗,应该怎么写代码?
作者: Lumiere 时间: 2013-9-2 11:33
本帖最后由 Lumiere 于 2013-9-2 11:41 编辑
回复 9# junxi0928
是可以的,你最好把文件夹有几层,文件夹的名字等,或者具体的操作要求写出来,这样模糊的一个概念别人不好写代码。
作者: 林小七 时间: 2013-9-2 13:05
回复 9# junxi0928
行的通,等我晚上用电脑写一下,现在手头么电脑
作者: 林小七 时间: 2013-9-2 19:55
回复 9# junxi0928
回复 9# junxi0928 - @echo off
- for /r %%a in (*.bat) do (
- if not %%~na equ %~n0 (
- @echo 启动 %%~na.bat....
- call "%%a"
- @echo %%~na.bat 运行完成...
- )
- )
- @echo.
- @echo.全部执行完成.任意键退出
- pause>nul
复制代码
放在你说的目录的统计目下~~就是比如你的一堆文件夹在“D:\备份”下~~则把这个p处理放在“D:\备份”的目录里面~~
javascript:;
效果图如下~~不知道是不是你想要的效果~~对了,目录里面可以有子目录~
作者: junxi0928 时间: 2013-9-3 11:26
回复 12# 林小七
今天放在主目录上面试了一下,结果是没有调用起里面的bat运行,只是显示了运行哪个bat文件,但是里面的句子没有运行起来,是不是哪句话错误了。
我需要调用的就是你之前写给我的移动文件的批处理,一个一个去运行就太繁琐了,一共十几个文件夹,就一共有十几个批处理了。大大,感谢再帮我看看了
作者: 林小七 时间: 2013-9-3 12:18
回复 13# junxi0928
等我晚上看看,我在学校的机房测试通过了,xp系统,可能是环境变量的问题,我测试的bat只是显示自己的位置,没有对文件进行操作,,,,
作者: junxi0928 时间: 2013-9-3 14:05
回复 14# 林小七
好的,谢谢!期待你的回复
作者: junxi0928 时间: 2013-9-3 14:26
回复 14# 林小七
在刚刚的测试中,我发现了,主bat运行时只调用了一个我写的那些bat,其他的不会调用运行。
作者: 林小七 时间: 2013-9-3 16:31
回复 15# junxi0928
都修改了~~两个文件~win7测试完美通过~~你试一试win2003~~
这是运行的主Bat..- @echo off&&title MoveAlls
- for /r %%a in (*.bat) do (
- if not %%~na equ %~n0 (
- @cd /d "%%~pa"
- @echo 启动 %%~na.bat....
- call "%%a"
- @cd..
- @echo %%~na.bat 运行完成...
- )
- )
- @echo.
- @echo.全部执行完成.任意键退出
- pause>nul
复制代码
这个是修改的移动西东文件的Bat- ::移动文件
- :: By seven
- :: 2013.8.30
- @echo off&&setlocal enabledelayedexpansion
- title Moves By:Seven
- if not exist 单号 md 单号 双号
- for %%a in (*.rar) do (
- set s=%%a
- set s=!s:~6,2!
- call :moves !s! %%a
- )
- @echo.移动完成.....
- pause&&goto :eof
- :moves
- for %%d in (02 04 06 08 10 12 14 16 18 20 22 24 26 28 30) do (
- set now=%%d
- if %1 equ !now! move %2 双号&&goto :eof
- )
- move %2 单号
- goto :eof
复制代码
效果如图~~这是运行后的文件夹结构~~已经移动了~
[attach]6739[/attach]
作者: 林小七 时间: 2013-9-3 16:41
回复 16# junxi0928
我也发现了~这是因为在移动的bat里面是直接的exit~而主bat是call *.bat~造成主bat退出~
楼上已经修改了这个Bug~如果用start也能运行~怕你文件太多,电脑卡机,所以两个bat文件都做了修改~目前win7已经完美通过~
作者: junxi0928 时间: 2013-9-4 10:05
回复 17# 林小七
谢谢小七高手,主bat在WIN2003上面测试通过,现在移文件就没那么复杂了,以后每月一次的移动就更简答了,我已经做成了计划任务,每月一次自动运行主bat!
再次感谢。以后有问题希望能继续关照,哈哈!
作者: 林小七 时间: 2013-9-4 12:45
本帖最后由 林小七 于 2013-9-4 13:07 编辑
回复 19# junxi0928
好的~...如果有问题继续追问,如果么问题了~还请采纳我的答案~并在帖子标题上注明以解决~谢谢
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |