bat怎么批量以文件夹名字命名文件夹中第一个文件?

比如说有文件夹A,B,C,然后命名给文件夹A中第一个文件名为AB中的第一个为B以此类推... 比如说有文件夹A,B,C, 然后命名给文件夹A中第一个文件名为A B中的第一个为B 以此类推 展开
 我来答
qop_dob
2022-11-10 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.3万
采纳率:79%
帮助的人:3955万
展开全部
不清楚你的实际文件/情况,仅以问题中的说明及猜测为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起双击运行
<# :
cls&echo off&cd /d "%~dp0"&mode con lines=5000
rem rem 将多个文件夹内排在第一位的文件以所在文件夹名重命名
set #=Any questions&set _=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%_% %z%
set "self=%~f0"
powershell -NoProfile -ExecutionPolicy bypass "Get-Content -literal '%~f0'|Out-String|Invoke-Expression"
echo;%#% +%$%%$%/%_% %z%
pause
exit
#>
$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;

$b=[Convert]::FromBase64String("IC0tPiA=");
$c=[Text.Encoding]::Default.GetString($b);
$self=get-item -literal $env:self;
$current=$self.Directory.FullName;
$folders=@(dir -literal $current|?{$_ -is [System.IO.DirectoryInfo]});
for($i=0;$i -lt $folders.length;$i++){
    $files=@(dir -literal $folders[$i].FullName|?{$_ -is [System.IO.FileInfo]}|%{$_.Name});
    if($files.length -ge 1){
        $arr=[ExpDir]::Sort($files);
        for($j=0;$j -lt $arr.count;$j++){
            $ext='';
            $m=[regex]::match($arr[$j], '\.[^\.]+$');
            if($m.Success){$ext=$m.groups[0].value;}
            $folders[$i].FullName.Substring($current.length)+'\'+$arr[$j]+$c+$folders[$i]+$ext;
            break;
        }
    }
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式