批处理复制删除文件(高手帮忙)

能否帮忙写个这样的批处理程序
要从网络上\\SERVER 复制某文件夹到本地D盘根目录,前提是复制完后D盘剩余空间不小于1GB,如果剩余空间不足无法复制则依次删除D盘下访问时间最早的文件夹,直到能够复制目标文件夹为止...
大概就是这样,不知道批处理能不能实现
能用批处理实现就太好了,先感谢makosharp~~~.
makoshar能否留个联系方式,QQ之类的

很负责的告诉楼上,批处理是可以做这一切滴,你也太小看扩展DOS了。
算D盘空间很简单,在CMD里打这个就可以知道

for /f "usebackq tokens=2 delims=录可" %i in (`dir /ad d:\`) do @echo %i

(那个`是反括不是',别抄错)
原理是利用DIR的显示结果,通过“录”和“可”两个字做分隔符号来将显示的结果划分开,取出剩余空间那一部分就可以了。利用环境变量或者临时文件,可以很方便的存储这些数据;用管道命令,也可以把结果当参数传给后续命令…… = =
不显示你的剩余空间你来找我= =
楼主表急,其他部分我正在写,先给你个希望^.^

工作忙昨天没在不好意思,今天继续写
176229432 工作时间在线

说一个关键问题:
用DIR /OD /S能把当前目录和所有子目录下的文件排序,但是是在各自的子目录里排序,没法直接实现跨目录文件排序。如果用批处理实现可能很复杂,但是可以做。

下面是没有删除旧文件模块的批处理,已经全面测试过。
可以判断目标大小和本地目录空间,空间足够就COPY
使用方式: xxx.bat \\10.20.1.26\我的音乐
将会把目标目录下所有文件带子目录拷贝到‘当前’目录。
这里我没有去和1GB相比(= =|没时间了,稍后继续写)

@echo off
cls
echo Welcome using AmazingBAT!
echo Author:MakoSharp
echo -
echo -
if {%1}=={} goto usage
for /f "usebackq" %%i in (`cd`) do set myvar_dir=%%i\
dir /a | find "个目录" > 1temp1.txt
for /f "usebackq tokens=3" %%i in (1temp1.txt) do set myvar1=%%i
echo Your free space in d: is %myvar1% bytes.
pushd %1
dir /a | find "个文件" > %myvar_dir%1temp2.txt
for /f "usebackq tokens=3" %%i in (%myvar_dir%1temp2.txt) do set myvar2=%%i
echo Files on %1 takes %myvar2% bytes.
set myvar_exit=p1
goto compare
:p1
if %myvar_return% neq gtr goto p2
echo -
echo You have enough free space on d:.
echo Press any key to copy files to ...
pause
echo Copying files,please DO NOT close CMD until finish.
xcopy %1 %myvar_dir% /e /v /q /h /y
echo Done.
goto exit
:p2
echo -
echo You have NOT enough free space on d:.
echo Press any key to delete old files for space...
pause
rem -------here to sort and delete old files-----
echo Uncomplete part =_=
rem ---------------------------------------------
echo -
echo Done.
goto exit

:usage
echo Usage: amazingbat dir
echo dir:any directory in \\server
echo -
goto exit

:compare
set myvar1>%myvar_dir%1temp1.txt
set myvar2>%myvar_dir%1temp2.txt
dir %myvar_dir%1temp1.txt | find "个文件" > %myvar_dir%1leng1.txt
for /f "usebackq tokens=3" %%i in (%myvar_dir%1leng1.txt) do set myvar_leng1=%%i
dir %myvar_dir%1temp2.txt | find "个文件" > %myvar_dir%1leng2.txt
for /f "usebackq tokens=3" %%i in (%myvar_dir%1leng2.txt) do set myvar_leng2=%%i
if %myvar_leng1% gtr %myvar_leng2% goto gtr
if %myvar_leng1% lss %myvar_leng2% goto lss
rem var1&var2 has the same length.
rem parse vars and compare
for /f "tokens=1,2,3,4,5 delims=," %%i in ("%myvar1%") do (
set myvar11=%%i
set myvar12=%%j
set myvar13=%%k
set myvar14=%%l
set myvar15=%%m )
for /f "tokens=1,2,3,4,5 delims=," %%i in ("%myvar2%") do (
set myvar21=%%i
set myvar22=%%j
set myvar23=%%k
set myvar24=%%l
set myvar25=%%m )
if %myvar11% gtr %myvar21% goto gtr
if %myvar11% lss %myvar21% goto lss
if %myvar12% gtr %myvar22% goto gtr
if %myvar12% lss %myvar22% goto lss
if %myvar13% gtr %myvar23% goto gtr
if %myvar13% lss %myvar23% goto lss
if %myvar14% gtr %myvar24% goto gtr
if %myvar14% lss %myvar24% goto lss
if %myvar15% gtr %myvar25% goto gtr
if %myvar15% lss %myvar25% goto lss
goto equ

:gtr
set myvar_return=gtr
goto back

:lss
set myvar_return=lss
goto back

:equ
set myvar_return=equ
goto back

:back
rem release source
for /l %%i in (1,1,5) do set myvar1%%i=
for /l %%i in (1,1,5) do set myvar2%%i=
goto %myvar_exit%

:exit
rem release resoure here
popd
set myvar1=
set myvar2=
set myvar_leng1=
set myvar_leng2=
set myvar_return=
set myvar_exit=
set myvar_dir=
if exist %myvar_dir%1temp1.txt del %myvar_dir%1temp1.txt
if exist %myvar_dir%1temp2.txt del %myvar_dir%1temp2.txt
if exist %myvar_dir%1leng1.txt del %myvar_dir%1leng1.txt
if exist %myvar_dir%1leng2.txt del %myvar_dir%1leng2.txt
rem close

需要解释原理的话请QQ联系我。
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-04-16
批处理可以实现,但是很麻烦,不如写个程序来完成。
第2个回答  2007-04-16
批处理不能实现,比如批处理如何知道D盘剩余空间呢?编个程序啦。
第3个回答  2007-04-18
楼上的很强哦,网管吗?~~

批处理复制删除文件(高手帮忙)
很负责的告诉楼上,批处理是可以做这一切滴,你也太小看扩展DOS了。算D盘空间很简单,在CMD里打这个就可以知道 for \/f "usebackq tokens=2 delims=录可" %i in (`dir \/ad d:\\`) do @echo %i (那个`是反括不是',别抄错)原理是利用DIR的显示结果,通过“录”和“可”两个字做分隔符...

紧急求一个批处理复制命令,在线等,望高手帮忙写一个,高分奖励!
删除U盘里的Copy文件夹的所有文件可以用rd Q:\\Copy \/s \/q的命令 再md Copy即可

求高手帮忙做一个批处理文件删除!!
如果是大概删除文件的话也可以如下,删除多个文件 del \/f\/s\/q\/a "f:\\新建文件夹 (14)\\dlcomponents\\*"上面是删除所有f:\\新建文件夹 (14)\\dlcomponents\\文件夹内的所有文件 如果删除如123 124 125 126 127 等知道一部分文件名,后面不一样的话 可以这样del \/f\/s\/q\/a "f:\\新建文件夹 (14...

谁能教教我怎么用批处理删除文件
1.查看目录和ACL 以Windows XP系统为例,笔者使用Cacls命令查看E盘CCE目录访问控制权限。点击“开始→运行”,在运行对话框中输入“CMD”命令,弹出命令提示符对话框,在“E:\\>”提示符下输入“Cacls CCE”命令,接着就会列出Windows XP系统中用户组和用户对CCE目录的访问控制权限项目。如果想查看CCE目...

怎么使用批处理命令删除文件
命令:DEL,删除文件或目录 增加参数:\/F 参数说明:使用此参数即“DEL \/F”可删除只读文件。增加参数:\/S、\/Q 参数说明:使用此参数即“DEL\/S”作用与“RD\/S”完全相同,即删除目录及目录下的所有子目录和文件。同时使用参数\/Q,可取消删除操作时的系统确认。增加参数:\/A 参数说明:删除指定属性...

批处理删除文件夹命令
1、右键单击桌面上的任意位置→新建→文本文档。2、然后,取一个随机名称(删除顽固的图标)。3、双击打开新创建的文本文档文件,然后输入删除文件的命令:Del \/ F \/ A \/ Q \\\\?\\%1 RD \/ S \/ Q \\\\?\\%1 4、保存它,然后将文件的扩展名从原始txt更改为bat。此时系统将发出警告,单击是。

批处理删除文件
del \/f\/q del.bat 文件解释:1、先看看del命令的三个参数的意思。\/F 强制删除只读文件。\/S 从所有子目录删除指定文件。\/Q 安静模式。删除全局通配符时,不要求确认。2、*.wma表示所有的wma文件,*是dos的通配符。3、上面文件假设你有C、D、E、F四个盘,如果有其它盘,请自行修改;以上文件删除...

...次删除C盘下一个文件(是COOKIES)里的,高手帮忙写一个.
函数原型:BOOL DeleteDirectory(char *DirName);返回值:成功删除时返回TRUE,否则返回FALSE 参数DirName为要删除的目录名,必须为绝对路径名,如“c:\\\\temp"。函数定义如下:BOOL DeleteDirectory(char *DirName){ CFileFind tempFind;char tempFileFind[200];sprintf(tempFileFind,"%s\\\\*.*",DirName)...

批处理删除文件夹下所有文件
批处理删除文件夹下所有文件的方法:1、电脑上新建一个文件夹,新建一个“TXT”文件,并命名;2、点击右键,把文件的后缀名设置为.bat;3、另新建文件夹和文件,作为列出的示例;4、右键打开文件,第一行输入“del 、q、a、fC:、Users、Administrator、Desktop、新建文件夹、a”作为命令行;5、第二...

这个文件一直删不掉,删除的时候跳出来这个信息。求高手帮忙 。。。
搜索下载 3、删除文件建一个批处理试试,桌面右键-新建-文本文档-(或打开记事本,把下面的命令复制后粘贴进去)写入下列命令:DEL \/F \/A \/Q \\\\?\\%1 RD \/S \/Q \\\\?\\%1 文件-另存为"删除.bat" (名字可以自己选,但是后缀一定要".bat")然后,把要删除的文件或者目录拖放到这个bat文件的图标...

相似回答
大家正在搜