找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21375|回复: 11

[文本处理] 批处理怎样判断可移动磁盘有容量的就复制指定的内容到磁盘里?

[复制链接]
发表于 2010-5-22 08:59:18 | 显示全部楼层 |阅读模式
那位大虾帮忙写个找到有容量的可移动磁盘就复制指定的文件到可移动磁盘里的呢?帮帮忙了,谢了!
发表于 2010-5-22 09:22:09 | 显示全部楼层
可移动磁盘的可用容量怎么判断,大于多少就复制,小于多少不复制
要复制什么呢?C盘的还是D盘的,是文件夹还是文件
发表于 2010-5-22 10:43:40 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p freeLower=请输入最小的自由空间大小^(单位:MB^),默认值100MB,最大值 2047 MB:
  3. set /a "freeLower*=(1024*1024)"
  4. if "!freeLower:~0,1!"=="-" set /a "freeLower=2047*1024*1024"
  5. if "!freeLower!"=="0" set /a "freeLower=100*1024*1024"
  6. echo 自由空间下限=!freeLower! Bytes
  7. wmic logicaldisk where "DriveType=2 and FreeSpace>!freeLower!" get Description,DeviceID,FreeSpace /value
  8. for /f "tokens=2 delims==" %%d in (
  9. 'wmic logicaldisk where "DriveType=2 and FreeSpace>!freeLower!" get DeviceID /value') do (
  10. set "drv=%%d"
  11. echo copy something to !drv:~0,-1!\somewhere...
  12. )
  13. pause
  14. exit /b
复制代码
 楼主| 发表于 2010-5-22 11:01:37 | 显示全部楼层

回复 3楼 的帖子

我要在100M以上就可以拷贝D:\TV里的文件到可移动磁盘里
可不可以省点代码的呢?
发表于 2010-5-22 14:05:26 | 显示全部楼层
要求:只有一个符合条件的可移动磁盘分区
  1. @echo off
  2. for /f " skip=1 tokens=1*" %%a in ('wmic logicaldisk where DriveType^=2 get DeviceID^,FreeSpace') do for %%c in (%%b) do if %%c gtr 104857600 copy D:\TV\*.* %%a\
复制代码
复制到最后一个符合条件的可移动磁盘分区:
  1. @echo off
  2. for /f " skip=1 tokens=1*" %%a in ('wmic logicaldisk where DriveType^=2 get DeviceID^,FreeSpace') do for %%c in (%%b) do if %%c gtr 104857600 set a=%%a\
  3. if defined a copy D:\TV\*.* %a%
复制代码
复制到第一个符合条件的可移动磁盘分区:
  1. @echo off
  2. for /f " skip=1 tokens=1*" %%a in ('wmic logicaldisk where DriveType^=2 get DeviceID^,FreeSpace') do for %%c in (%%b) do if %%c gtr 104857600 copy D:\TV\*.* %a%\&&goto:eof
复制代码

[ 本帖最后由 hanyeguxing 于 2010-5-22 14:40 编辑 ]
 楼主| 发表于 2010-5-22 15:12:43 | 显示全部楼层

回复 5楼 的帖子

寒夜兄的代码就是简洁。多谢了
我想问你一个问题%%a和%%d有什么区别,都是怎样使用的?
发表于 2010-5-22 15:52:54 | 显示全部楼层
没有区别,在for中定义了谁,子句里用谁就可以。
就像set a=1,然后再调用%a%一样。
 楼主| 发表于 2010-5-22 17:35:43 | 显示全部楼层

回复 5楼 的帖子

@echo off
for /f " skip=1 tokens=1*" %%a in ('wmic logicaldisk where DriveType^=2 get

DeviceID^,FreeSpace') do for %%c in (%%b) do if %%c gtr 104857600 set a=%%a
start  "" " !a:~0,1!.BAT"这样运行了怎么会是打不到“!a:~0,1!.BAT”文件呢?
发表于 2010-5-22 18:26:59 | 显示全部楼层

回复 8楼 的帖子

1,在所有符合条件的分区内执行:
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f " skip=1 tokens=1*" %%a in ('wmic logicaldisk where DriveType^=2 get DeviceID^,FreeSpace') do for %%c in (%%b) do if %%c gtr 104857600 set a=%%a&start "" !a:~0^,1!.bat
复制代码
2,在最后一个符合条件的分区内执行:
  1. @echo off
  2. for /f " skip=1 tokens=1*" %%a in ('wmic logicaldisk where DriveType^=2 get DeviceID^,FreeSpace') do for %%c in (%%b) do if %%c gtr 104857600 set a=%%a
  3. start "" %a:~0,1%.bat
复制代码

[ 本帖最后由 hanyeguxing 于 2010-5-22 18:29 编辑 ]
 楼主| 发表于 2010-5-23 19:13:41 | 显示全部楼层

已解决回复 9楼 的帖子

多次多谢寒夜兄。我怎么觉得批处理是这么难学的呢?一个命令在不同的地方用法也不同比如start "" " !a:~0,1!.bat和start "" %a:~0,1%.bat不能互用的。是什么原因的呀?
 楼主| 发表于 2010-5-24 08:41:35 | 显示全部楼层

回复 10楼 的帖子

那些特殊符号都是怎么用的?好像功能好多的,在不同的地方功能不一样的。
发表于 2010-5-24 09:22:08 | 显示全部楼层

回复 10楼 的帖子

学习一下教程吧:批处理中的变量延迟扩展、变量嵌套
http://bbs.bathome.net/thread-2899-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 04:27 , Processed in 0.016221 second(s), 10 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表