[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 如何将下级文件夹合并到上级,并在上级文件夹名称后面加上下级文件夹名?

本帖最后由 pcl_test 于 2018-11-22 03:53 编辑

批处理如何将下层文件夹名提取到上层,并在两者之间加符号?
现在目录下所有的文件夹下都只有一个文件夹,我现在想把子文件夹的名字提取到上层,并加一个“-”。
比如第一层文件夹叫“1234”,第二层叫“5678”,运行后,第一层文件夹的名字变成“1234-5678”,其他不变。下面的这个程序无法实现加符号的功能。
不知道如何实现加符号呢~谢谢各位大侠!
  1. @echo off
  2. for /f "delims=" %%a in ('dir /a:d /b') do (
  3. for /f "delims=" %%b in ('dir /a:d /b "%%~a"') do (
  4. echo %%a
  5. echo %%b
  6. move "%%~pa\%%~na\%%b" "%%~pa\%%~na%%~nb"
  7. )
  8. rd /s /q "%%a"
  9. )
复制代码

最后一个%%~na之间应该有个内容的,添加这里看看%%~nb

move "%%~pa\%%~na\%%b" "%%~pa\%%~na-%%~nb"

TOP

use strict;

opendir ( DIR , ".") or die 'Open dir failed\n';
my @dirlist = readdir(DIR);
closedir DIR;

my @dir = grep { -d  and  not m/^\./} @dirlist;
#print "$_\n" for @dir;

for my $u (@dir){
        opendir (DIR , $u)        or die "Open dir $u failed\n";
        my @dl = readdir(DIR);
        closedir DIR;
       
        @dl =  grep {  not m/^\./} @dl ;
       
        $_ = "${u}\\${_}" for @dl;
       
        ##print "${_} ++\n" for @dl;
       
        my @dll = grep { -d  } @dl ;
        #print "$_\n"  for @dll;
        my $newdir = @dll[0];
        $newdir =~ s/\\/-/;
        #print "$newdir\n";
        rename  $u , $newdir;
}

TOP

楼上的  不会吧,要这么复杂?

TOP

  1. @echo off
  2. for /f "delims=" %%a in ('dir /ad /b') do (
  3.     for /f "delims=" %%b in ('dir /ad /b "%%a"') do (
  4.          ren "%%~sa" "%%~na-%%~nb"
  5.     )
  6. )
  7. pause
复制代码
智慧是,利用最简单的代码替代复杂事情的处理过程。
付款请扫头像二维码码,谢谢

TOP

返回列表