背景如下
当时公司有个需求需要刻盘,文件大小为370G,全部都是录音,但是刻盘DVD一张只能存4.7G,而实际使用中最好不要超过4.1G,370G如果手动分的话就非常累了,所以有了如下BAT,它的作用非常简单,就是当文件满4个G的时候自动生成一个文件夹并转移进去。
<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000&rem bat存为ANSI/GB2312编码
set "self=%~f0"
echo;waiting……
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo;done
pause
exit
#>
$specific=4*1073741824;
$index=1;
$prefix="文件夹";
$self=get-item -literal $env:self;
$current=$self.Directory.FullName.trimend('\');
$size=0;$foldername=$prefix+$index.toString();
$newfolder=$current+'\'+$foldername;
if(-not (test-path -literal $newfolder)){[void][IO.Directory]::CreateDirectory($newfolder);}
$files=@(dir -literal $current|?{($self.Name -ne $_.Name) -and ($_ -is [System.IO.FileInfo])});
for($i=0;$i -lt $files.length;$i++){
write-host ($files[$i].Name+' --> '+$foldername);
$newfile=$newfolder+'\'+$files[$i].Name;
move-item -literal $files[$i].FullName $newfile -force -ErrorAction SilentlyContinue;
$size=$size+$files[$i].length;
if($size -ge $specific){
$size=0;
$index++;
if(($i+1) -lt $files.length){
$foldername=$prefix+$index.toString();
$newfolder=$current+'\'+$foldername;
if(-not (test-path -literal $newfolder)){[void][IO.Directory]::CreateDirectory($newfolder);}
}
}
}
- THE END -
最后修改:2023年3月19日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://ospf.me/1-4
共有 0 条评论