标题: [文件操作] 批处理判断硬盘剩余空间再复制文件 [打印本页]
作者: smss 时间: 2019-2-16 13:15 标题: 批处理判断硬盘剩余空间再复制文件
需求如下
当D盘剩余空间大于100G则复制A文件到D 否则复制到E
作者: xczxczxcz 时间: 2019-2-16 14:40
假如复制文件当前目录下的,POWERSHELL- $disk = (Gwmi -class win32_logicaldisk|?{$_.DeviceID -match 'D'}).Freespace / 1GB;
- IF ($disk -gt 100) {Copy ref.txt -dest d:\ -force}else{Copy ref.txt -dest e:\ -Force}
复制代码
作者: smss 时间: 2019-2-16 15:10
假如复制文件当前目录下的,POWERSHELL
xczxczxcz 发表于 2019-2-16 14:40
需要BAT脚本的 POWERSHELL兼容不高
判断各磁盘剩余空间的大小
@echo off&setlocal enabledelayedexpansion
for %%i in (d,e) do (
if exist %%i: for /f "tokens=3" %%j in ('dir %%i: ^|find "可用字节"') do echo %%i盘剩余 %%j 字节
)
比较字节 这样写
作者: xczxczxcz 时间: 2019-2-16 15:18
回复 3# smss
PowerShell 兼容性不高?除XP要手动安装 2。0外后绪系统都是自带的。判断所有磁盘剩余空间那不更简单。偶只是见招拆招。
作者: smss 时间: 2019-2-16 15:32
回复 smss
PowerShell 兼容性不高?除XP要手动安装 2。0外后绪系统都是自带的。判断所有磁盘剩余空间那 ...
xczxczxcz 发表于 2019-2-16 15:18
我在意思是除了这段还有其它脚本已用BAT编写
还有这脚本也是需要在XP下正常运行的
作者: xczxczxcz 时间: 2019-2-16 15:54
还不如到微软官网下载XP版PS ,才6M多点。且汉化程度比任何其它系统都好。用BAT搞这些纯是撑的。PS用一句简短的话就全部搞定了。
作者: smss 时间: 2019-2-16 17:01
还不如到微软官网下载XP版PS ,才6M多点。且汉化程度比任何其它系统都好。用BAT搞这些纯是撑的。PS用一句简短 ...
xczxczxcz 发表于 2019-2-16 15:54
- @echo off
- Setlocal enabledelayedexpansion
- for /f "skip=1 tokens=1-6" %%a in ('wmic logicaldisk get caption^,drivetype^,freespace') do (if "%%b"=="3" (set "size=%%c"
- )
- )
- if %size% gtr 107374182400 (copy a.txt d:\) else (copy a.txt e:\)
- pause
复制代码
凑了一段 可以用 还能再精减吗
对截取不理解
作者: flashercs 时间: 2019-2-16 19:03
本帖最后由 flashercs 于 2019-2-16 19:05 编辑
回复 7# smss
bat比powershell优秀的一点是 可以比较非常长的数值大小 比如下面这个,在powershell中被认为非法- if 5252222222222222222222222222222222222222222222229999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111177777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777772 lss 639 (echo yes) else echo no
复制代码
powershell- 5252222222222222222222222222222222222222222222229999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111177777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777772 -lt 693
复制代码
作者: 523066680 时间: 2019-2-16 21:39
本帖最后由 523066680 于 2019-2-16 22:17 编辑
回复 8# flashercs
>if 222222222222222222222222225 GTR 99999999999999999 (echo yes ) else (echo no )
no
批处理,弊端是比较多,不过定位摆在那里,不强求。
Powershell,微软的亲儿子,但是微软却在 WIN10 引入了 WSL,拥抱LINUX。
作者: 523066680 时间: 2019-2-16 22:04
本帖最后由 523066680 于 2019-2-17 09:18 编辑
回复 7# smss - @echo off &Setlocal enabledelayedexpansion
- for /l %%a in (1,1,30) do set mask=0!mask!
- for /f "skip=1 tokens=1-6" %%a in ('wmic logicaldisk get caption^,drivetype^,freespace') do (
- if "%%a"=="D:" (
- set "DSize=%%c"
- )
- )
-
- echo free size %DSize%
- set G100=%mask%107374182400
- set DSize=%mask%%DSize%
-
- if "%Dsize:~-30%" gtr "%G100:~-30%" (echo gtr 100G ) else (echo lss 100G)
复制代码
作者: WHY 时间: 2019-2-17 22:05
- wmic logicaldisk where "freeSpace>107374182400" get name|find /i "D:"&© a.txt d:\||copy a.txt e:\
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |