找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 26977|回复: 4

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

[复制链接]
发表于 2018-11-16 16:24:09 | 显示全部楼层 |阅读模式
本帖最后由 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. )
复制代码
发表于 2018-11-16 19:32:03 | 显示全部楼层
最后一个%%~na之间应该有个内容的,添加这里看看%%~nb

move "%%~pa\%%~na\%%b" "%%~pa\%%~na-%%~nb"
发表于 2018-11-17 15:36:26 | 显示全部楼层
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;
}
发表于 2018-11-17 15:45:27 | 显示全部楼层
楼上的  不会吧,要这么复杂?
发表于 2018-11-18 07:57:23 | 显示全部楼层
  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
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 12:50 , Processed in 0.018563 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表