1

Я пытался написать программу .bat которая найдет все файлы с заданным расширением, например * .doc, и поместит их в архив rar .

Я хочу, чтобы все файлы были скопированы, даже если они имеют одинаковые имена (у меня есть файлы с одинаковыми именами в разных каталогах). Мне все равно, будут ли файлы переименованы, если я сохраню их все. Например, если у меня есть new.doc в Desktop и другой new.doc в D: мне все равно, если один из двух или даже оба будут переименованы в new1.doc или new2.doc или любым другим способом. Кроме того, программа может сохранить их, используя путь, по которому они их нашли. Использование rar over 7-zip или любой другой программы сжатия предпочтительнее, но если это действительно необходимо, можно использовать другую программу. И последнее, но не менее важное: я хочу, чтобы программа искала весь компьютер (все жесткие диски). Например, у меня есть C: D: и F: и я хочу найти все 3 и создать архив D:\test.rar . Я испробовал несколько решений и дошел до

for %%i in (c: d: f:) do for /f "delims=" %%j in ('dir /s /a-d /b %%i\*.doc') do "C:\Program Files\WinRAR\Rar.exe" a d:\test.rar "%%~j"

Теперь моя проблема в том, что на некоторых ПК все работает нормально, но на некоторых он находит меньше файлов, чем на самом деле. Я нахожу общее количество файлов, ищущих *.doc и сравниваю найденное число с количеством .doc файлов в архиве. Я понятия не имею, почему некоторые файлы не найдены. Любые идеи или комментарии будут с благодарностью.

1 ответ1

0

В этом случае вам даже не нужно использовать for , поскольку сам RAR поддерживает рекурсию (не говоря уже о том, что использование for крайне неэффективно, поскольку ваша команда каждый раз открывает и закрывает архив для его обновления и добавления следующего файла). Вместо этого используйте следующую команду (вы можете заменить WinRAR.exe на RAR.exe, если хотите):

WinRAR a -ep2 -r D:\Test.rar C:\*.doc D:\*.doc F:\*.doc

Замените -ep2 на -ep3 если вы хотите также сохранить буквы дисков в архиве. Кроме того, если вы по- прежнему находите в архиве меньше подходящих файлов, чем существует в вашей системе, добавьте ключ -e+rash и затем сравните. Это должно гарантировать, что файлы не будут пропущены, независимо от их атрибутов.

Что касается окончательного размера архива, просто сохраните его на диск в формате NTFS (или exFAT), и все будет в порядке. Если вам важен один огромный файл, взгляните на ключ -v чтобы создать несколько томов, то есть разделенный архив.

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