首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > windows >

文件处理的批处理

2011-12-30 
求一个文件处理的批处理问题是这样的:目录C:\dat 有三个这样的文件,2008a.txt,2009b.txt,2008c.txt, 其中2

求一个文件处理的批处理
问题是这样的:
目录C:\dat 有三个这样的文件,2008a.txt,2009b.txt,2008c.txt, 其中2008是代表年份,可变的,后面的文件名不可变
我想实现这样的操作
1.把dat下面所有的文件的年份取出来,写到year.txt文件中,
a 2008
b 2009
c 2008
2。然后把文件名的年份去掉变成a.txt,b.txt,c.txt
3。拷贝这些文件到backup目录下,并加上当时的系统日期,如a_20080924.txt,b_20080924.txt,c_20080924.txt

想用一个window batch实现这个操作。如果同时能给出一个unix的bacth就更感谢了

[解决办法]
window batch能做这样的事情?太厉害了,我只能编程序实现... -_-!
[解决办法]

BatchFile code
@echo offset sp=c:\datset bp=c:\backupfor /f "tokens=2 delims==" %%t in ('wmic os get localdatetime /value') do (set dt=%%t)set dt=%dt:~,8%for /f "tokens=*" %%a in ('dir /b /a-d %sp%') do (call :doit %%a)goto :eof:doitset fn=%1echo %fn:~4,1% %fn:~,4%>>.\year.txtren %sp%\%fn% %fn:~4,20%copy %sp%\%fn:~4,20% %bp%\%fn:~4,1%_%dt%.txt
[解决办法]
羊很强大 


[解决办法]
探讨
羊很强大

[解决办法]
探讨
谢谢啊,不过还是有些问题,backup没有成功阿。而且如果在运行一次还是自动减4位阿,我希望如果前面不是数字的话就不执行这个操作,可以吗?

[解决办法]
2楼用wmic是为了获取20080924这样的系统日期,如果你想用其它方法,可以先运行这个命令:
BatchFile code
echo %date%
[解决办法]
BatchFile code
@echo offsetlocal enabledelayedexpansionset SrcDir=C:\datset DstDir=C:\dat\backupset DstFile=C:\dat\year.txtset Today=%date:~6,4%%date:~0,2%%date:~3,2%for %%a in ("%SrcDir%\*.txt") do (  set file=%%~na  set year=!file:~0,4!  set name=!file:~4!  if !year! lss 9999 (    >>"%DstFile%" echo.!name! !year!    ren "%%a" "!name!%%~xa"    copy "%SrcDir%\!name!%%~xa" "%DstDir%"    ren "%DstDir%\!name!%%~xa" "!name!_%Today%%%~xa"  ))
[解决办法]
很强大!
[解决办法]
比狼还厉害的羊, 很好很强大。
[解决办法]
牛人很多啊!@
[解决办法]
只有Windows Server 2003有 wmic 命令,还有楼主应在该操作系统下(可以考虑用虚拟机),将文件名改为a2008.txt,b2009.txt,c2008.txt,羊 的批处理在该操作系统下才能完全正确的。
[解决办法]
强啊
[解决办法]
。。。。。。。
[解决办法]
强人无线多!
[解决办法]
探讨
只有Windows Server 2003有 wmic 命令,还有楼主应在该操作系统下(可以考虑用虚拟机),将文件名改为a2008.txt,b2009.txt,c2008.txt,羊 的批处理在该操作系统下才能完全正确的。

[解决办法]
用Python做吧,比批处理简单,高效
[解决办法]
顶~~~~~~~~~~~
[解决办法]
探讨
BatchFile code@echo off
setlocal enabledelayedexpansion


set SrcDir=C:\dat
set DstDir=C:\dat\backup
set DstFile=C:\dat\year.txt
set Today=%date:~6,4%%date:~0,2%%date:~3,2%
for %%a in ("%SrcDir%\*.txt") do (
set file=%%~na
set year=!file:~0,4!
set name=!file:~4!
if !year! lss 9999 (
>>"%DstFile%" echo.!name! !year!
ren "%%a" "!name!%%~xa"
copy "%SrcDir%\!name!%%~xa…


[解决办法]
哪有,告诉我了
[解决办法]
我服了YOU,羊与007
[解决办法]
自卑中
[解决办法]
长见识了
[解决办法]

热点排行