>  2001/03/23 (金) 20:42:22        [mirai]
> > つか、これ何?
> (ρ_;) グサ


use Cwd("getcwd");
use IO;
use strict;
use Win32API::File(":Func");

our($sfile,$hdir,@sfiles);

$hdir = new IO::Dir(getcwd());

# ファイル名取得
foreach $sfile ($hdir->read()) {
	-d($sfile) || push(@sfiles,$sfile);
}

foreach $sfile (@sfiles) {
	# ファイル名、連番、拡張子に分割
	my($sfname,$nnumber,$ssfx) = ($sfile =~ m/(.*[^\d])(\d+)(\..*)$/);
	
	if (($sfname ne '')
	&& ($ssfx ne '')
	&& ($nnumber ne '')
	&& (length($sfname . $nnumber . $ssfx) == length($sfile))) {
		# 全文字数分きちんと拾えておれば
		$sfname =~ s/_?$//;
		# 存在しなければmkdir()
		-d($sfname) || mkdir($sfname) || die "fault mkdir: $!";
		# ファイルをそこへ移動
		MoveFile($sfname,"${sfname}\\${sfile}") || STDERR->print("fault copy $sfile: ",fileLastError());
		
	} else {
		# うまく分割できなかった
		STDOUT->print(
			"ORIGIN:[$sfile]",
			"NOMATCHED",
			"\n"
		);
	}
	exit;
}

あんたのアイディアも取り入れて完成…のつもりだったんだが
"プロセスはファイルにアクセスできません。別のプロセスが使用中です。"
と出て動かねぇよ。当方Win2K。

参考:2001/03/23(金)20時19分13秒