bat批处理查找识别文件名中特定字符,并移动对应的文件夹。

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呢?不放到文件夹里面去需要怎么修改?

追答

按运行后窗口中的提示联系我

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网