[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 如何在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文件呢?
1

评分人数

    • zm900612: 请把超过一行的代码用code括起来PB -2

现在还有人用dos?

TOP

编程上需要用,其实DOS功能还是很实用的。

TOP

  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. )
复制代码
一路飘过的鸟~~~

TOP

可以啦,实在太感谢楼上了!!!

TOP

3# justosayhi


DOS是一个操作系统,你用的那个是Windows里面的CMD

TOP

@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的参数,还望帮忙再看看。

TOP

大哥还在吗? 能帮忙再看看吗?

TOP

7# justosayhi


估计是文件完整路径中含空格或者其他分隔符吧,把可能含有空格的文件路径用 " 框起来试试

TOP

返回列表