2

У меня много файлов (100 ГБ), и я хочу передать некоторые из них моему другу. Но он должен выбрать, какие файлы ему нужны, и я не могу дать ему все файлы одновременно (у меня нет такой большой USB-флешки или USB-жесткого диска). Я могу составить список всех файлов и передать их на небольшую USB-флешку ему, и тогда он сможет сказать, какие папки он хочет, а какие нет.

Как мне составить список файлов, который можно легко просмотреть в стандартной установке Windows XP или с помощью небольшой программы, похожей на WindowsExplorer? Я могу сделать листинг, похожий на ls -lR и сохранить его в txt, но моему другу будет трудно просмотреть этот список. Есть плагин diskdir от Total Commander, который может архивировать папку в текстовый файл с сохранением только имен и путей к файлам. Затем этот плагин позволяет Total Commander перемещаться внутри этого архива, как внутри Zip или ARJ. Но я думаю, что Total Commander слишком сложен в использовании для моего друга, поэтому я спрашиваю о Windows-подобном решении (например, winzip позволяет Explorer перемещаться внутри zip-архивов, и я хочу что-то подобное).

Так. Я могу установить любую программу, также я могу сохранить программу просмотра со списком файлов на USB-флешке.

4 ответа4

2

Просто используйте команду dir /s > C:\temp\filename.txt . Это выведет структуру каталогов в файл C:\temp\filename.txt. Начните с места, из которого вы хотите спуститься.

Тогда просто отправьте ему файл TXT.

1

Предполагая, что вы можете установить powershell v2 на своем локальном компьютере (или уже установили его), следующий скрипт может сделать то, что вам нужно (он может работать в powershell v1, не уверен):

$dupedir = "D:\Backup"
$newdir = "C:\Temp"
$dupelist = Get-ChildItem -Force -Recurse -ErrorAction SilentlyContinue $dupedir

foreach ($item in $dupelist) 
{
    If ($item -is [Io.DirectoryInfo])
    {
        $itemtype = "directory"
    }
    If ($item -is [Io.FileInfo])
    {
        $itemtype = "file"
    }

    New-Item -Force -type $itemtype -Path $item.FullName.Replace("$dupedir","$newdir")
}

Измените путь для $dupedir на корень пути, о котором вы хотите сообщить своему другу. Как только этот скрипт завершит работу, у вас должно быть точное зеркало файловой структуры (но не реальных файлов), которую вы хотите, чтобы ваш друг посмотрел в C:\Temp (или где-то еще, если вы также измените каталог для переменной $newdir , Не размещайте переменную $newdir в каталоге переменной $dupedir иначе вы получите бесконечную рекурсию, которая может в конечном итоге занять все дисковое пространство (даже если "файлы" - это 0-байтовые файлы).

Хорошая особенность powershell в том, что вы можете "писать" скрипты в командной строке (аналогично bash). Скопируйте код в текстовый редактор, внесите изменения в путь, затем скопируйте и вставьте все это в окно PowerShell, и оно будет волшебным.

Я знаю, что вы упомянули, что у вас есть bash, и если бы вы хотели это на машине с Unix / Linux, я мог бы сделать это в bash. К сожалению, я никогда не очень хорошо разбирался в скриптах bash, когда требовалось поработать с файловой системой Windows.

0

Я думал об этом вопросе некоторое время и нашел два решения. Лучшим является следующее.

Используйте cdcat - программу, которая может индексировать деревья файловой системы, такие как DVD или жесткие диски (без сохранения больших файлов в индексе), и хранить несколько из них в одном каталоге. Это, вероятно, программа выбора для такой задачи, поскольку она также включает метаинформацию о музыке (теги ID3) и видео (разрешение, продолжительность и т.д.) В каталог. Еще одна приятная особенность заключается в том, что cdcat может вычислять, насколько велика индексированный каталог или файл (узел).

Он сохранит всю мета-информацию (и небольшие файлы, такие как nfo, если вы настроите это для этого) в сжатом XML-файле. Чтобы скопировать файлы от вас (человека A) кому-то (человеку B), после того, как он (B) выберет то, что он действительно хочет, может работать так:

  1. Персона А индексирует все свои интересные файлы (вы должны проверить настройки cdcat, прежде чем делать это, чтобы быть уверенным, что будет включено, например, nfo, теги ID3 и т.д.) И сохранить их как один каталог.
  2. Человек А копирует каталог лицу Б.
  3. Теперь человек Б должен как-то выбрать файлы. Мне пришла в голову идея использовать поле категории, которое можно добавить к каждому узлу (каталогу или файлу). Это поле может быть использовано в качестве приоритета, например. Любой узел, к которому нет рекурсивно присоединенной категории или со специальной категорией, не будет скопирован позже. Категория также сохраняется в файле XML, и для нее не очень сложно написать анализатор для экспорта, например, сценария .bat или сценария Bash, чтобы скопировать все нужные файлы.
  4. Человек B передает специальный сценарий копирования ОС человеку A (или, конечно, человек B возвращает измененный каталог и позволяет человеку A создавать сценарий копирования).
  5. Человек А выполняет сценарий копирования и дает человеку Б носитель данных. (Будет небольшое неудобство, потому что cdcat не сохраняет путь к точке монтирования, откуда данные были проиндексированы в каталоге.)
  6. Человек B копирует файлы в свое хранилище и передает носитель данных человеку А.

Это решение еще не идеально, но это лучшее, что я придумал. Я еще не использовал это, но я сделаю это в будущем. Во время этого мне нужно будет написать расширение или скрипт, который генерирует скрипты копирования для Linux и для Windows. Я планирую включить это непосредственно в программу cdcat.

Второе и более сложное решение, которое заслуживает наставничества, - это использовать git-annex, который, вероятно, также можно использовать для этого, но я не думал об этом так же осторожно, как о решении с cdcat, потому что этот второй подход каким-то образом потребует, чтобы оба человека (A и B) имеют git-приложение и знают, как его использовать…

Я буду держать вас в курсе.

0

Почему бы не использовать ZIP-файл? Вы можете просматривать все файлы в одном окне, но извлекать их в разные папки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .