标题: [文件操作] 如何在dos中比较局域网目录中的两个文件大小和覆盖呢? [打印本页]
作者: justosayhi 时间: 2011-7-3 23:16 标题: 如何在dos中比较局域网目录中的两个文件大小和覆盖呢?
本帖最后由 justosayhi 于 2011-7-3 23:18 编辑
已查到下面的代码能把本机电脑某个文件的大小和预设参数作比较,然后把小于参数的文件进行复制或移动。
@echo off&setlocal enabledelayedexpansion
title %date% %time:~,8% By escortmnm
cd d:\abc\test
for /f "tokens=*" %%i in ('dir /b data.dat) do (
if %%~zi leq 665600 move /y "%%~dpnxi" "bad.bak")
pause
但我想实现下面的功能:
首先进入局域网的\\abc\test目录,然后比较a.dat文件和b.dat文件,如果a.dat比b.dat小10kb的话就自动把b.dat覆盖a.dat.,这个bat文件能在任意一台局域网的电脑运行,请问应该如何编写这个bat文件呢?
作者: Demon 时间: 2011-7-3 23:24
现在还有人用dos?
作者: justosayhi 时间: 2011-7-3 23:42
编程上需要用,其实DOS功能还是很实用的。
作者: ArdentMan 时间: 2011-7-4 11:18
- @Echo Off&SetLocal EnableDelayedExpansion
- For %%I IN (局域网的\\abc\test\b.dat) Do (
- For %%J IN (d:\abc\test\a.dat) Do (
- Set /A Num=%%~zI-%%~zJ
- If !Num! GEQ 10240 Copy /Y "%%I" "%%J"
- )
- )
复制代码
作者: justosayhi 时间: 2011-7-4 13:43
可以啦,实在太感谢楼上了!!!
作者: CUer 时间: 2011-7-4 19:22
3# justosayhi
DOS是一个操作系统,你用的那个是Windows里面的CMD
作者: justosayhi 时间: 2011-7-4 23:55
@Echo Off&SetLocal EnableDelayedExpansion
For %%I IN (局域网的\\abc\test\b.dat) Do (
For %%J IN (d:\abc\test\a.dat) Do (
Set /A Num=%%~zI-%%~zJ
If !Num! GEQ 10240 Copy /Y "%%I" "%%J"
...
ArdentMan 发表于 2011-7-4 11:18
发生一个很奇怪的问题,直接运行这个批处理完全正常,但装入程序里运行这个批处理时却说操作失败,找不到参数这样。
经测试应该是 Set /A Num=%%~zI-%%~zJ这个代码有问题,可能是程序运行批处理时找不到set的参数,还望帮忙再看看。
作者: justosayhi 时间: 2011-7-5 18:27
大哥还在吗? 能帮忙再看看吗?
作者: CrLf 时间: 2011-7-5 18:49
7# justosayhi
估计是文件完整路径中含空格或者其他分隔符吧,把可能含有空格的文件路径用 " 框起来试试
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |