标题: [文件操作] 如何将下级文件夹合并到上级,并在上级文件夹名称后面加上下级文件夹名? [打印本页]
作者: vicky_ive 时间: 2018-11-16 16:24 标题: 如何将下级文件夹合并到上级,并在上级文件夹名称后面加上下级文件夹名?
本帖最后由 pcl_test 于 2018-11-22 03:53 编辑
批处理如何将下层文件夹名提取到上层,并在两者之间加符号?
现在目录下所有的文件夹下都只有一个文件夹,我现在想把子文件夹的名字提取到上层,并加一个“-”。
比如第一层文件夹叫“1234”,第二层叫“5678”,运行后,第一层文件夹的名字变成“1234-5678”,其他不变。下面的这个程序无法实现加符号的功能。
不知道如何实现加符号呢~谢谢各位大侠!- @echo off
-
-
- for /f "delims=" %%a in ('dir /a:d /b') do (
- for /f "delims=" %%b in ('dir /a:d /b "%%~a"') do (
- echo %%a
- echo %%b
- move "%%~pa\%%~na\%%b" "%%~pa\%%~na%%~nb"
- )
- rd /s /q "%%a"
- )
复制代码
作者: xp3000 时间: 2018-11-16 19:32
最后一个%%~na之间应该有个内容的,添加这里看看%%~nb
move "%%~pa\%%~na\%%b" "%%~pa\%%~na-%%~nb"
作者: zuodx 时间: 2018-11-17 15:36
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;
}
作者: xczxczxcz 时间: 2018-11-17 15:45
楼上的 不会吧,要这么复杂?
作者: lifei259 时间: 2018-11-18 07:57
- @echo off
- for /f "delims=" %%a in ('dir /ad /b') do (
- for /f "delims=" %%b in ('dir /ad /b "%%a"') do (
- ren "%%~sa" "%%~na-%%~nb"
- )
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |