标题: [文件操作] 批处理如何判断某个盘是否大于指定容量,然后移动文件? [打印本页]
作者: 一只大猩猩 时间: 2022-1-13 20:02 标题: 批处理如何判断某个盘是否大于指定容量,然后移动文件?
- @echo off & setlocal enabledelayedexpansion
- :step
- set/a num=60
- for /l %%a in (!num! -1 1) DO (
- echo 剩余时间: [%%a]
- timeout /t 1 /nobreak>nul & cls
- )
- move E:\*.TXT H:\
- goto step
复制代码
这是我编辑的每60秒把E盘的TXT文本移动到H盘里。
现在我想把H盘做个更改,增加DFGHJILKIMN盘,每个盘剩余容量大于10G的时候才把E盘的TXT文本移动过去,从D盘开始,如果D盘剩余容量小于10G了,那就不移动到D盘了,改移动到F盘,F盘不够10G了就移动到G盘。以此类推~
每60秒检查一次.
在这里卡壳了。谢谢各位大佬们了~~
作者: flashercs 时间: 2022-1-14 00:15
- @echo off & setlocal enabledelayedexpansion
- set prefix=00000000000000000000000000000000
- set targetSpace=10000000000
- set targetSpace=%prefix%%targetSpace%
- set targetSpace=%targetSpace:~-32%
- :step
- set/a num=60
- for /l %%a in (!num! -1 1) DO (
- echo 剩余时间: [%%a]
- timeout /t 1 /nobreak>nul & cls
- )
- set volume=
- for %%A in (D F G H I J I L K M N) do (
- for /f "tokens=*" %%B in ('wmic path win32_volume where "DriveLetter='%%A:'" get freespace /value^|find "="') do set %%B
- set freespace=%prefix%!freespace!
- set freespace=!freespace:~-32!
- if "!freespace!" gtr "!targetspace!" set "volume=%%A:\" & goto break
- )
- :break
- if defined volume move E:\*.txt !volume!
- goto step
复制代码
作者: aloha20200628 时间: 2022-1-14 12:03
为纯P编程打造的一些常用利刃...在此可派上用场:
1. 获取磁盘剩余空间
md 【tmp】
for /f "tokens=1-2 delims=个目录 " %%1 in ('dir /-c 【tmp】^| findstr /c:" 可用字节" ') do set diskV=%%2
rd 【tmp】
echo,%diskV%
2.字节单位转GB单位(即给纯P一个浮点除法及其圆整功能)
for /f "delims=" %%v in ('mshta "javascript:new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(Math.floor(%diskV%/1073741824));close();" ') do set diskV_GB=%%v
echo,%diskV_GB%
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |