win10bat批量重命名图片为什么部分命名了部分不行?

发布网友 发布时间:2022-04-20 12:07

我来回答

1个回答

热心网友 时间:2023-06-26 21:20

以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起双击运行
<# :
cls
@echo off
rem 将多个文件夹里的文件按照原有排列顺序以指定位数的递增数字序号重命名
mode con lines=5000
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
powershell -NoProfile -ExecutionPolicy bypass "Invoke-Command -ScriptBlock ([ScriptBlock]::Create([IO.File]::ReadAllText('%~f0',[Text.Encoding]::GetEncoding('GB2312')))) -Args '%~f0'"
echo;%#% +%$%%$%/%@% %z%
pause
exit
#>
$self=get-item -liter $args[0];
$path=$self.Directory.FullName;

$codes=@'
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
public static class ExpDir
{
[DllImport("Shlwapi.dll", CharSet=CharSet.Unicode)]
public static extern int StrCmpLogicalW(string p1, string p2);
public static string[] Sort(string[] f)
{
Array.Sort(f, StrCmpLogicalW);
return f;
}
}
'@;
Add-Type -TypeDefinition $codes;

[byte[]]$b=@(32,45,45,62,32);
$c=[Text.Encoding]::Default.GetString($b);
$folders=@(dir -liter $path|?{$_ -is [System.IO.DirectoryInfo]});
for($i=0;$i -lt $folders.length;$i++){
$arr=@(dir -liter $folders[$i].FullName|?{$_ -is [System.IO.FileInfo]}|%{$_.Name});
if($arr.length -ge 1){
write-host $folders[$i].FullName -ForegroundColor yellow;
$files=[ExpDir]::Sort($arr);
for($j=0;$j -lt $files.count;$j++){
$f=get-item -liter ($folders[$i].FullName+'\'+$files[$j]);
$newname=($j+1).toString().PadLeft(4,'0')+$f.Extension
write-host ($files[$j]+$c+$newname);
};
};
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com