bat批处理查找识别文件名中特定字符,并移动对应的文件夹。
展开全部
@echo off
rem 根据从文件名中指定字符串/关键词开始截取指定位数的字符来移动文件到对应文件夹
set #=q&set/azx=0x53b7e0b4
title Any question +%#%%#% %zx%
cd /d "%~dp0"
set "keyword=20191231"
set "n=15"
powershell -NoProfile -ExecutionPolicy bypass ^
$files=@(dir^|?{($_ -is [System.IO.FileInfo]) -and ($_.Name -ne '%~nx0')});^
for($i=0;$i -lt $files.length;$i++){^
$n=$files[$i].BaseName.IndexOf('%keyword%');^
if($n -ge 0){^
$s=$files[$i].BaseName.Substring($n);^
if($s.length -ge %n%){^
$kw=$s.Substring(0,%n%);^
[void](md $kw -force);^
$txt=$files[$i].Directory.FullName+'\'+$kw+'\%n%.txt';^
out-file -file $txt -input $kw -enc Default;^
write-host ($files[$i].Name+' --^> '+$kw);^
mv -liter $files[$i].FullName ($files[$i].Directory.FullName+'\'+$kw);^
};^
};^
}
echo;Any question +%#%%#% %zx%
pause
追问
谢谢你,非常感谢!采纳了。我其实不懂,只是有类似的需求,我试着改了下,根据特定字符移动OK,能满足。。其中有一点,你理解有误,你这是把那15位字符的txt,输出在每个文件夹下面。虽然最后我也能从执行结果复制出来得到这些15位字符,但我还是想再麻烦你。如果是把所以的15位字符,输出到同一个TXT呢?不放到文件夹里面去需要怎么修改?
追答
按运行后窗口中的提示联系我
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询