一段本机上拷贝文件的JavaScript代码

文件都存放在一个目录中,为一对文件hdr/img,如下
RENV_002_S_0816_MR_MPRAGE_br_raw_20060929164645213_1_S19532_I25405.hdr/img
RENV_011_S_0003_MR_MPRAGE_br_raw_20050901114749730_1_S9128_I7055.hdr/img
其中文件名最后一段的I*****(4或5个数字)是唯一的。

工作需要,要挑出这个目录中的一部分文件,但是现只能给出如下的信息放在TXT文档里
RENV_011_S_0022_MPRAGE_S9616_I7721
RENV_011_S_0023_MPRAGE_S14185_I14888
这里面也有I*****(4或5个数字),所以只需提取此信息足够了,虽然还有其他信息可用。例如给出了RENV_011_S_0022_MPRAGE_S9616_I7721,需要把RENV_011_S_0022_MR_MPRAGE_br_raw_20060929164645213_1_S9616_I7721.hdr/img两个文件拷贝出来。

OK,写代码吧
//  JavaScript Document
//
 2007-10-23 RenV
//
CopyFiles

// 指定文件和目标目录
var  listfile = " E:/DATA/dataSelected/Another10Selected.txt " ;
var  pathtosave  =   " E:/DATA/dataSelected/Another10Selected_test " ;
//  给出路径,获取其中所有文件路径
var  folderspec  =   " H:/converted/AD_patient/ " ;

/* ************************** 下面是工作代码 ******************************** */
var  WshShell  =   new  ActiveXObject( " WScript.Shell " ); // Shell对象

var  fso1  =   new  ActiveXObject( " Scripting.FileSystemObject " );
var  f2  =  fso1.OpenTextFile(listfile); // 打开信息文件
//
 fso1.DeleteFolder(pathtosave);//如果硬盘上没有此目录,则脚本会出错。
fso1.CreateFolder(pathtosave); // 如果硬盘上已有此目录,则脚本会出错。

var  reg1  =   / _Id {4,5} .(hdr | img)$ / ; // 用以匹配hdr/img文件名
var  reg2  =   / _Id {4,5} / ; // 用以匹配信息文件名(不带扩展名)

var  fso2  =   new  ActiveXObject( " Scripting.FileSystemObject " );
var  folder  =  fso2.GetFolder(folderspec);
var   fc =   new  Enumerator(folder.files); // 迭代器

for ( var  strName1;strName1 = f2.readLine();)
{
var strImageID = reg2.exec(strName1);//从strName1获取ImageUID,这是唯一的
    //reg2.exec("RENV_011_S_0022_MPRAGE_S9616_I7721")返回 "_I7721"
//
 WshShell.popup(strImageID);

    
for (fc.moveFirst(); !fc.atEnd(); fc.moveNext())
    
{
    
var strName2 = String(fc.item());
    
if( strName2.indexOf(strImageID)>-1 )//如果文件名中还有我们的ImageUID
        {
//         fso2.copyFile(strName2,pathtosave);
        WshShell.Run("cmd.exe /K copy " + strName2 + " " + pathtosave + " &&exit");
        
//老提示没有权限,只好出此下策,使用Shell的copy吧
        }

    }


}


文件存为copyfiles.js,在命令提示符中键入"cscript.exe copyfiles.js"即可执行这个JavaScript文件。

其中有个问题,就是不知为何,使用文件对象的copyFile方法拷贝文件时总提示没有权限,没办法改用cmd中的copy命令执行吧。如有哪位大虾知道怎么回事,望不吝赐教,小弟先谢过了。

你可能感兴趣的:(技巧集锦)