文件排序批量改名兼中文乱用
import std.file;
import std.path;
import std.string;
import std.stdio;
long 获取创建时间(char[] 文件路径)
{
long 创建时间;
long 访问时间;
long 修改时间;
getTimes(文件路径, 创建时间, 访问时间, 修改时间);
return 创建时间;
}
struct 时间旧新文件名
{
long 创建时间;
char* 旧文件名;
char* 新文件名;
}
void main(char[][] args)
{
if(args.length != 2)
{
printf("sample:\n>>rfl \"ff7\"\n>>ff7-map.mid => 06-map.mid");
return;
}
char[][] 临时文件列表 = listdir(getcwd());
时间旧新文件名[] 文件列表;
时间旧新文件名[] 新文件列表;
foreach(char[] 文件名; 临时文件列表)
{
时间旧新文件名 t;
t.创建时间 = 获取创建时间(文件名);
t.旧文件名 = toStringz(文件名);
t.新文件名 = toStringz(文件名);
文件列表 ~= t;
}
long[] 临时时间列表;
foreach(时间旧新文件名 t; 文件列表.sort)
{
临时时间列表 ~= ;
}
临时时间列表.sort;
foreach(long 时间; 临时时间列表)
{
foreach(时间旧新文件名 t; 文件列表)
{
if(时间 == t.创建时间 )
{
新文件列表 ~= t;
}
}
}
for(uint i = 0; i < 新文件列表.length; i++)
{
uint fc = 新文件列表.length;
char[] t;
char[] c;
if(fc>=0 && fc<=9)
{
c ~= toString(i+1);
}
if(fc>=10 && fc<=99)
{
if(i>=0 && i<9)
{
c = "0" ~ toString(i+1);
}
else
{
c ~=toString(i+1);
}
}
if(fc>=100 && fc<=999)
{
if(i>=0 && i<9)
{
c = "00" ~ toString(i+1);
}
else if(i>=9 && i<=99)
{
c = "0" ~ toString(i+1);
}
else
{
c ~= toString(i+1);
}
}
if(fc>=1000 && fc<=9999)
{
if(i>=0 && i<9)
{
c = "000" ~ toString(i+1);
}
else if(i>=9 && i<=99)
{
c = "00" ~ toString(i+1);
}
else if(i>=99 && i<=999)
{
c = "0" ~ toString(i+1);
}
else
{
c ~= toString(i+1);
}
}
if(fc>9999)
{
return;
}
t = replace(toString(新文件列表.旧文件名), args, c);
新文件列表.新文件名 = toStringz(t);
}
foreach(时间旧新文件名 t; 新文件列表)
{
printf("%s\n>> %s\n####################\n", t.旧文件名, t.新文件名);
}
printf("Please press a key:\ny : rename all\nn : skip all\n");
switch(getchar())
{
case 121:
foreach(时间旧新文件名 t; 新文件列表)
{
printf("%s\n>>%s\n", t.旧文件名, t.新文件名);
std.file.rename(toString(t.旧文件名),toString(t.新文件名));
}
printf(">>>> rename ok!\n");
break;
default:
printf(">> exit program!");
break;
}
}
这是,什么?汉字也能做变量么? 除了关键字外,unicode中的所有字符都可以拿来用。
python 3.x ruby1.9.x....很多语言都可以这么干。 ruby倒是见着过。。。但是我还是喜欢英文。。。。习惯了
页:
[1]