有没有一个JavaScript InDesign函数来获取ID值?

问题描述 投票:0回答:1

我使用命令将硬盘ID导出到C盘。

var command="wmic diskdrive get SerialNumber > C:/idhdd.txt"; 
app.system("cmd.exe /c\""+command+"" );

我得到的文本文件是

SerialNumber      
2012062914345300

有没有一个JavaScript语句来删除SerialNumber,我只是想在文本文件中获取ID,然后保存到硬盘C盘。

javascript photoshop extendscript
1个回答
0
投票

这里是即用即得的 getDriveIDs() 函数,该函数应该在任何Adobe应用程序中工作,并将为你返回HDD ID字符串数组。我希望这可以很容易地推广到其他场景,在Adobe脚本中使用Windows脚本;-)

//----------------------------------------------------------------------//

// Detects IDs (serial numbers) of connected drives and returns them as array of strings.

var getDriveIDs = function() {
    var idFile = File(Folder.temp + '/saved_hdd_serials.txt');
    var scriptFile = File(Folder.temp + '/dump_hdd_serials.bat');
    var scriptContent = 'wmic diskdrive get SerialNumber > ' + idFile.fsName + '\n';
    var ids = []
    withTempFile(scriptFile, scriptContent, function() {
        scriptFile.execute();
        $.writeln(idFile.length == 0); // wait for asynchronous script execution to finish
            $.sleep(1);
        withTempFile(idFile, undefined, function(file, lines) {
            ids = lines.slice(1);
        });
    });
    return ids;
};

//----------------------------------------------------------------------//
// utilities

var withTempFile = function(file, content, callback) {
    if (undefined == content) { // read temp file
        file.open('r');
        content = [];
        while (!file.eof)
            content.push(file.readln());
    } else { // write temp file
        file.open('w');
        file.write(content);
        content = undefined;
    }
    file.close();
    callback(file, content);
    file.remove();
}

//----------------------------------------------------------------------//
// main: demo

var ids = getDriveIDs();
alert('Drive IDs:\n\t' + ids.join('\n\t'));
© www.soinside.com 2019 - 2024. All rights reserved.