返回列表 发帖

【完结】20元求一个搜索命名的批处理

本帖最后由 lxh623 于 2022-4-12 16:12 编辑

我有些数字命名的pdf,比如:14698469,想把它们按照文本a来改名字:
太时髦了!为什么不可以这样穿---(法)马克·博热著;(英)鲍勃·伦敦绘;刘宇彤译---台海出版社---2018---14698469
我的批处理是:
@echo off
for /f %%a in ('dir /s /b /a-d "J:\NDM\"') do (
    for /f %%b in ('findstr "%%~nxa" a.txt') do (
    ren "%%a" "%%b.pdf"
    )
)
pauseCOPY
但是,试了一下,没有效果。电脑装了固态硬盘,开始不是本地磁盘,我自己重命名了磁盘。
谢谢!

本帖最后由 zaqmlp 于 2022-4-12 16:03 编辑
<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal \"%~f0\"|out-string|Invoke-Expression"
pause
exit
#>
$txtfile=".\a.txt";
$folder="J:\NDM";
if(-not (test-path -literal $txtfile)){write-host ('"'+$txtfile+'" not found');exit;}
if(-not (test-path -literal $folder)){write-host ('"'+$folder+'" not found');exit;}
$text=[IO.File]::ReadAllLines($txtfile, [Text.Encoding]::GetEncoding('GB2312'));
$files=@(dir -literal $folder -recurse|?{($_.Name -match '^\d+\.pdf$') -and ($_ -is [System.IO.FileInfo])});
for($i=0;$i -lt $files.length;$i++){
    for($j=0;$j -lt $text.count;$j++){
        if($text[$j].Contains($files[$i].BaseName)){
            if($text[$j] -ne $files[$i].BaseName){
                $newname=($text[$j] -replace '[\t\\\/:\*\?"<>\|]','')+$files[$i].Extension;
                $newfile=$files[$i].Directory.FullName+'\'+$newname;
                write-host ($files[$i].FullName+' --> '+$newname);
                move-item -literal $files[$i].FullName $newfile -force -ErrorAction SilentlyContinue;
                break;
            }
        }
    }
}COPY
1

评分人数

提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

zaqmlp 发表于 2022-4-12 15:42

谢谢!
除了数字,全部显示乱码。
̫ʱ���ˣ�Ϊʲô������������---��������ˡ�����������Ӣ���������׶ػ棻����ͮ��---̨��������---2018---14698469

TOP

本帖最后由 zaqmlp 于 2022-4-12 16:05 编辑

回复 3# lxh623


   已修改
提需求最好同时打包部分原文件发网盘
提供bat代写,为你省时省力省事,支付宝扫码头像支付
微信: unique2random

TOP

回复  lxh623


   已修改
提需求最好同时打包部分原文件发网盘
zaqmlp 发表于 2022-4-12 16:03

请查收。谢谢!

TOP

返回列表