我需要一个能把文件夹中的文件及子文件夹中的文件批量重命名的bat文件。重命名规则为在文件名的每个字符前添加一个@,需要把文件夹里面的文件、文件夹、及子文件都重命名。
之前别人给我写过一个bat,但是只能把第一个文件重命名。各位大神高手们能帮忙把这个bat改为能对文件夹里面的文件、文件夹、及子文件都重命名吗?非常感谢。
下面是只能把第一个文件改名的bat的代码- <# :
- cls&echo off&cd /d "%~dp0"&mode con lines=5000
- rem 在当前目录里的文件名称的每一个字符前面添加/插入一个指定字符
- set #=Any question
- title %#% +%$%%$%/%_% %z%
- set "self=%~f0"
- powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
- echo;%#% +%$%%$%/%_% %z%
- pause
- exit
- #>
- $addword="&";
- $self=get-item -literal $env:self;
- $current=$self.Directory.FullName;
- $files=@(dir -literal $current|?{($self.Name -ne $_.Name) -and ($_ -is [System.IO.FileInfo])});
- if($files.length -ge 1){
- $base=[regex]::replace($files[0].BaseName, '\S', {
- param($m);
- return $addword+$m.groups[0].value;
- });
- $newname=$base+$files[0].Extension;
- $newfile=$files[0].Directory.FullName+'\'+$newname;
- write-host ($files[0].FullName.Substring($current.length)+' --> '+$newname);
- move-item -literal $files[0].FullName $newfile -force -ErrorAction SilentlyContinue;
- }
复制代码
|