这个批处理怎么实现

yueludragon 2013-05-02 06:41:13
在一个大的文件夹下,有很多子目录,子目录名称都是"AA_XXX","BB_YYY"之类,每个子目录下有都有一个相同文件名的文件,比如是"test.file"。现在想做一个批处理,将所有子目录下的文件重命名为如下格式。
"AA_test.file"和"BB_test.file",并copy到一个公共目录comm。
...全文
190 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2013-05-31
  • 打赏
  • 举报
回复
虎虎虎,最后的 break 应该是 goto :eof 才是
「已注销」 2013-05-31
  • 打赏
  • 举报
回复
@echo off &&setlocal enabledelayedexpansion

set StartDir=G:\测试
set CommDir=G:\测试\comm
set FindFileName=test.file

call :FindNextDir,%StartDir%
exit


:FindNextDir
	set FindDir=%1
	set CurrentDir=%cd%
	cd %FindDir%
	for /f %%i in ('dir /ad /b ') do (
		call :FindNextFile,%%i
		call :FindNextDir,%%i
	) 
	cd /d %CurrentDir%
	break

:FindNextFile
	set DirName=%1
	set CurrentDir=%cd%
	cd %FindDir%
	set DirName=%DirName:~0,2%
	for /f %%i in ('dir /a-d /b %FindFileName%') do (
		move %%i  %CommDir%\%DirName%_%%i
	) 
	cd /d %CurrentDir%
	break
	
	
javacode007 2013-05-25
  • 打赏
  • 举报
回复
顶楼上所有人!
cTx521 2013-05-22
  • 打赏
  • 举报
回复
use File::Find;
use File::Copy;
use Data::Dumper;


my $folderPath = 'C:\Users\Desktop\local_files';

opendir(DIR,$folderPath) or die "$!";
@allFile=readdir DIR;


close(DIR);
delete $allFile[0];
delete $allFile[1];
for(@allFile) {
	if( (defined $_) && (-d $folderPath."\\".$_)) {
		my $folder = $_;
		print "->Folder: ".$folderPath."\\".$folder."\n";
		opendir(DH,$folderPath."\\".$folder) or die "$1";

		@allSubFile = readdir DH;
		delete $allSubFile[0];
		delete $allSubFile[1];
		for(@allSubFile) {
			if((defined $_) && (-e $folderPath."\\".$folder."\\".$file)) {
				my $file = $_;
				print "    ->File: $file\n";
				print "        Old name: $file\n        New name: ".$folder."_".$file."\n";
				rename($file, $folder."_".$file) or die "can not rename fileName$!";
			}
		}

		close(DH);
		print "\n\n";
	}
}




chuifengde 2013-05-03
  • 打赏
  • 举报
回复
test.bat

@echo off
setlocal enabledelayedexpansion

set c=test.file
set x=%1

for /f %%i in ('dir /B %x%') do (
	set g=%x%\%%i\%c%
	set e=%%i
	set l=!e:~0,2!
	rename !g! !l!_!c!
	copy !x!\!e!\!l!_!c! %2\!l!_!c!
)	


test.bat c:\big c:\common
李察德-泰森 2013-05-03
  • 打赏
  • 举报
回复

#-*- coding: utf-8 -*-

import os
import re
import shutil

SRC_PATH = 'D:\\test'
DES_PATH = 'D:\\common'
DIR_PATTERN = r'(\w{2})\_.*'

def dealfile():
    c = re.compile(DIR_PATTERN)
    basic = os.listdir(SRC_PATH)
    for itm in basic:
        if os.path.isfile(itm):
            continue
        dirname = c.findall(itm)
        if not dirname:
            continue
        dirname = dirname[0]
        filelist = os.listdir(os.path.join(SRC_PATH, itm))
        for f in filelist:
            if os.path.isdir(f):
                continue
            shutil.copyfile(os.path.join(SRC_PATH, itm, f), os.path.join(DES_PATH, dirname + '_' + f))


dealfile()
print 'finished'

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧