1

我正在开发一个 Windows 批处理脚本,该脚本仅使用命令行工具(和开源/免费工具)创建完整硬盘的目录/文件列表,用于存档/编目。对于列表中的每个条目,我想列出文件名、它所在的目录、文件大小、文件的日期和时间以及 md5 总和。我已经能够创建一个工作起点,但是我碰壁了,因为我不确定是否可以使用 Windows 中的命令行工具。命令“dir /s /a:-d /o:-d /t:c”给了我一个很好的概述,但我希望这个概述显示(或保存为)以逗号分隔的格式。所以我的问题是:

  • 我可以使用标准命令行工具(以及用于 md5 总和的 m5 免费软件工具)创建一个包含我上面提到的所有字段的 csv 文件吗?
  • 您知道更好的方法,还是我错过了一个简单的磁盘编目命令行工具?

提前感谢您的任何提示!

4

2 回答 2

1

您可以使用 dir /s /a:-d /o:-d /t:c > slam.txt

那么这个slam.txt的内容,就可以在windows中通过WScript进行处理,制作成一个CSV文件...

如果您需要 WScript ex,我可以提供一个吗?

于 2011-06-06T10:40:25.237 回答
0

我知道这不是一个 CSV 示例 - 但它应该足够复杂以激发模式灵感:)

记住这个文件被保存为 .js

var what2lookfor = '<rect ';
var forReading = 1, forWriting = 2, forAppending = 8, jx = 0, ix = 0;
var triStateUseDefault =  -2, triStateTrue = -1, triStateFalse = 0;
var thisRecord="", validFileTypes="js,xml,txt,php,xsl,css,htm,html" , akkum = "";
var fileArray = [];

var FSO = new ActiveXObject("Scripting.FileSystemObject");  
var objFiles = FSO.GetFolder("F:\\xps1710\\jscript\\");  
var objFileControl = new Enumerator(objFiles.files);  


for (; !objFileControl.atEnd(); objFileControl.moveNext()) {  
  objFile = FSO.GetFile(objFileControl.item());  

  var ext = objFile.Name.split(".");  
  if (validFileTypes.indexOf(ext[1]) > 1) {  
    fileArray[ix] = "F:\\xps1710\\jscript\\" + objFile.Name;        
    ix++;        
  }  
}  


for (zx = 0 ; zx < ix ; zx++  ) {  

  var file2Traverse = FSO.OpenTextFile(fileArray[zx], forReading, triStateUseDefault );              
  while (!file2Traverse.AtEndOfStream) {  
    thisRecord = file2Traverse.ReadLine();          

    if (thisRecord.indexOf(what2lookfor) > 1 ) {  
      akkum = akkum + fileArray[zx] + '::' + thisRecord + '\n';  
      break;  
    }  
  }

}
WScript.Echo(akkum);    
于 2011-06-14T13:10:10.857 回答