Windows命令行磁盘编目 - 保存到csv?

时间:2011-06-06 10:28:50

标签: windows command-line disk catalog

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

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

提前感谢任何提示!

2 个答案:

答案 0 :(得分:1)

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

然后,这个slam.txt的内容可以在Windows中由WScript处理,制作一个CSV文件......

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

答案 1 :(得分:0)

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

并记住此fil保存为.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);