Каталогизация дисков в командной строке Windows - сохранить в csv? - PullRequest
1 голос
/ 06 июня 2011

Я работаю над пакетным сценарием Windows, который создает список каталогов / файлов полного жесткого диска для целей архивирования / каталогизации, используя только инструменты командной строки (и инструменты с открытым исходным кодом / бесплатные инструменты). Для каждой записи в листинге я хотел указать имя файла, каталог, в котором он находится, размер файла, дату a, время файла и сумму md5. Мне удалось создать несколько рабочую отправную точку, но я врезался в стену, так как не уверен, возможно ли это даже с помощью инструментов командной строки в Windows. Команда "dir / s / a: -d / o: -d / t: c" дает мне хороший обзор, но я бы хотел, чтобы этот обзор отображался (или сохранялся) в формате с разделителями-запятыми. Итак, мои вопросы:

  • Могу ли я создать CSV-файл со всеми полями, которые я упомянул выше, с помощью стандартных инструментов командной строки (и бесплатного инструмента m5 для сумм md5)
  • Знаете ли вы о лучшем способе, или я пропустил мертвый простой инструмент командной строки для каталогизации дисков?

Заранее спасибо за любые советы!

Ответы [ 2 ]

1 голос
/ 06 июня 2011

Вы можете использовать dir / s / a: -d / o: -d / t: c> slam.txt

Затем содержимое этого slam.txt, может быть обработано WScript в Windows,создание файла CSV ...

Если вам нужен WScript ex, я могу предоставить его?

0 голосов
/ 14 июня 2011

Я знаю, что это не 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);    
...