请问bat批处理如何将一个文件移动到以“该文件名称的一部分”命名的文件...
发布网友
发布时间:2024-07-13 11:16
我来回答
共1个回答
热心网友
时间:2024-08-10 20:43
不清楚你的实际文件/情况,仅以问题中的样例/说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI/GB2312,跟要处理的多个文件放一起双击运行<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem 以文件名中的字段创建多级文件夹,并剪切/移动文件到对应文件夹里
path %SYSTEMROOT%\System32\WindowsPowerShell\v1.0;%path%
set #=Any questions&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$% %z%
set "self=%~f0"
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo;%#% +%$%%$% %z%
pause
exit
#>
$b=[Convert]::FromBase64String("IC0tPiA=");
$c=[Text.Encoding]::Default.GetString($b);
$self=get-item -literal $env:self;
$current=$self.Directory.FullName.trimend('\');
$files=@(dir -literal $current|?{('.pdf' -eq $_.Extension) -and ($_ -is [System.IO.FileInfo])});
for($i=0;$i -lt $files.length;$i++){
$m=[regex]::match($files[$i].BaseName, '^((.{4})[^-]+)-([^-]+)-[^-]+');
if($m.Success){
$newfolder=$current+'\'+$m.groups[2].value+'\'+$m.groups[1].value+'\'+$m.groups[3].value+'\'+$m.groups[0].value;
if(-not (test-path -literal $newfolder)){[void][IO.Directory]::CreateDirectory($newfolder);}
$files[$i].Name+$c+$newfolder;
}
}