Думаю, мне хотелось бы воссоздать каталог текстовых/поддельных файлов на USB-накопителе с точными именами файлов, которые существуют в главном каталоге.
Главный каталог находится на терабайтном диске, и он слишком большой, чтобы поместиться на любой флешке. Но когда я использую флешку, я хотел бы, чтобы имена файлов сталкивались, когда я загружаю дубликат из других мест. Например: я пытаюсь что-то загрузить, и он говорит: «У вас уже есть файл с именем...»
Я не против запуска этого (при условии, что он относительно быстрый) скрипта вручную, когда я обновляю главный каталог новыми дополнительными файлами, и вручную перемещаю полученную файловую структуру поддельных файлов на USB-накопитель.
У меня есть как минимум 3 уровня структуры каталогов. Я собрал простую тестовую структуру каталогов с файлами txt, против (в основном) реальной структуры pdf. Когда я вывожу tree /a /f . > list.txt
,:
Folder PATH listing for volume Windows
Volume serial number is 00C7-D795
C:\USERS\USER\DESKTOP\TEST
| list.txt
| script.bat
| script.txt
|
\---Top_Lvl
| file-2nd-1.txt
| file-2nd-2.txt
| file-2nd-3.txt
|
+---2nd_Level-1
| file-3rd-1.txt
| file-3rd-2.txt
| file-3rd-3.txt
|
+---2nd_Level-2
| | file-3rd-4.txt
| | file-3rd-5.txt
| | file-3rd-6.txt
| |
| \---3rd_Level-1
| file-4th-1.txt
| file-4th-2.txt
|
\---2nd_Level-3
file-3rd-7.txt
Я не знаю, как написать заголовок, чтобы программа чтения PDF-файлов отображала файл с расширением .pdf (но на самом деле это текстовый файл) - что было бы действительно потрясающим бонусом. И я не могу найти команду (attrib не работает, насколько я могу судить), которая выведет размер файла в текстовый вывод. Было бы здорово иметь доступ к размеру реального файла, нажав на поддельный файл, без необходимости искать что-либо где-то еще.
Возможные частичные решения?
Я нашел это:
Windows / Создание текстовых файлов подпапок с именами файлов в них
Но, похоже, это создает беспорядок и поддерживает только один уровень каталогов.
А когда я его переписал/изменил, он один раз сработал, а потом перестал работать:
@echo off
for /dd %%D in (*) do (
cd %%~nxD
tree /a /f > ..\%%~nxD.txt
cd ..
echo %%~nxD > dir_info.tmp
for /f "skip=3 delims=*" %%a in (%%~nxD.txt) do (
echo.%%a >> dir_info.tmp
)
copy /y dir_info.tmp %%~nxD.pdf
del /f /q dir_info.tmp
)
Он будет выгружать результаты в каталог, в котором он запущен, вместо того, чтобы сбрасывать их на рабочий стол (и я не могу понять, как сбросить их на рабочий стол по умолчанию - вместо того, чтобы жестко запрограммировать это, если я использую более одного компьютера/учетной записи для доступа к диску главного каталога). И я не уверен, что вы можете указать USB-накопитель, так как он, вероятно, все время меняется, в зависимости от того, что еще подключено.
Кроме того, я очень часто работаю на старых системах Windows, поэтому я искал пакетный файл. Если есть приложение, которое делает это, я бы определенно рассмотрел его - вместо того, чтобы заново вырезать колесо.
@eris предложил Robocopy, а также есть нечто под названием RichCopy:
https://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight
Но эти приложения сделаютдействительныйдубликаты главного каталога — а у меня нет столько свободного места ни на главном диске (ни, как уже говорилось ранее: на рабочей USB-флешке).
Похоже, я недостаточно ясно выразился. Я пытаюсь создать теневой каталог, в котором будут все имена файлов (и, в идеале, информация о реальном файле, например, размер), включая расширения, но занимающий минимальное пространство. Полагаю, что фактическое потребление места составит мегабайт или 3 (поскольку каждый файл и каталог использует ~блок) против сотен гигабайт (например, файл 50 МБ, файл 1 МБ, файл 832 Кб, файл 10 МБ, файл 15 МБ).
Похоже, robocopy — это то, что мне нужно, если я смогу заставить командную строку работать правильно:
ROBOCOPY Top_Lvl Shadow /CREATE
Не создает подкаталоги.
решение1
У @eris была правильная идея.
Из командной строки:
robocoy *Top_Lvl* *Shadow* /create /mir
Похоже, он создает теневую структуру каталогов с файлами нулевой длины, которая отражает главный каталог. Осталось только выяснить, как это сделать на диске, что должно быть просто вопросом определения путей для источника и назначения. Однако его нужно использовать с осторожностью, так как он не выдает автоматически ошибку перед перезаписью файлов и каталогов (неоптимально, имхо).
Он не выполняет дополнительную работу по созданию файлов, которые также предоставляют информацию (размер исходного файла), но на данный момент это вполне подходящее решение.