Board logo

标题: [文件操作] 如何在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

  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. For %%I IN (局域网的\\abc\test\b.dat) Do (
  3.   For %%J IN (d:\abc\test\a.dat) Do (
  4.     Set /A Num=%%~zI-%%~zJ
  5.     If !Num! GEQ 10240 Copy /Y "%%I" "%%J"
  6.   )
  7. )
复制代码

作者: 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