Как передать список файлов автономному пользователю с базовой версией Windows XP?

Как передать список файлов автономному пользователю с базовой версией Windows XP?

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

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

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

решение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.

решение2

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

Затем просто отправьте ему TXT-файл.

решение3

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

решение4

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

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

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

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

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

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

Я буду держать вас в курсе событий.

Связанный контент