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

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

那位大虾帮忙写个找到有容量的可移动磁盘就复制指定的文件到可移动磁盘里的呢?帮帮忙了,谢了!

可移动磁盘的可用容量怎么判断,大于多少就复制,小于多少不复制
要复制什么呢?C盘的还是D盘的,是文件夹还是文件
努力学习,努力挣分

TOP

  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
复制代码

TOP

回复 3楼 的帖子

我要在100M以上就可以拷贝D:\TV里的文件到可移动磁盘里
可不可以省点代码的呢?

TOP

要求:只有一个符合条件的可移动磁盘分区
  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 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 5楼 的帖子

寒夜兄的代码就是简洁。多谢了
我想问你一个问题%%a和%%d有什么区别,都是怎样使用的?

TOP

没有区别,在for中定义了谁,子句里用谁就可以。
就像set a=1,然后再调用%a%一样。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复 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”文件呢?

TOP

回复 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 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

已解决回复 9楼 的帖子

多次多谢寒夜兄。我怎么觉得批处理是这么难学的呢?一个命令在不同的地方用法也不同比如start "" " !a:~0,1!.bat和start "" %a:~0,1%.bat不能互用的。是什么原因的呀?

TOP

回复 10楼 的帖子

那些特殊符号都是怎么用的?好像功能好多的,在不同的地方功能不一样的。

TOP

回复 10楼 的帖子

学习一下教程吧:批处理中的变量延迟扩展、变量嵌套
http://bbs.bathome.net/thread-2899-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表