Команда DOS для перемещения всех файлов в подкаталогах на один уровень вверх без перезаписи одного и того же имени файла, уникальный размер - PullRequest
0 голосов
/ 29 декабря 2011

МОЙ ВОПРОС:

У меня такая же ситуация, как и у Риши. У меня есть несколько версий одной и той же песни одного и того же исполнителя, которые появляются на разных дисках. Если я использую пакетную команду в том виде, в котором она написана, DOS будет перезаписывать песни с одинаковым именем, даже если размер файла для каждого уникального файла будет разным?

ПРЕДЫДУЩИЙ ВОПРОС: команда DOS для перемещения всех файлов в подкаталогах на один уровень вверх

СПРАВКА Риши задал вопрос 15 января:

"У меня есть папка с множеством подпапок с одним или несколькими файлами в каждой. Я пытаюсь написать командный файл, который перемещает все эти файлы в C: \ songs (например).

C:> FOR / R C: \ Test% i IN (*) СДВИГАТЬ% i C: \ Songs Папки Test и песни существуют, но я получаю сообщение об ошибке

% Я был неожиданным в это время. Что я делаю не так? "

ОТВЕТ БЫЛ

"FOR / R% i IN (C: \ Test *) СДВИГАТЬ"% i "C: \ Songs В пакетном файле это должно быть %% i. Странный причуд партии. "

1 Ответ

0 голосов
/ 29 декабря 2011

В данной папке может быть только одна версия файла с заданным именем.При выполнении внутри пакета команда MOVE автоматически перезаписывает любой существующий ранее файл с тем же именем.Таким образом, ответ на ваш вопрос - ДА, файл с тем же именем будет перезаписан, даже если он имеет другой размер файла.(Примечание - если вы используете Windows XP, то вы не используете DOS)

Вы можете предотвратить перезапись существующего файла пакетным перемещением, отправив N в MOVE с параметром -y:

echo n | move /-y "%%~i" "C:\songs\" 

Если вы хотите скопировать и сохранить обе версии в одной и той же папке, необходимо переименовать хотя бы одну версию.Вам нужно будет решить, какую схему именования вы хотите использовать, прежде чем сможете приступить к поиску решения.

...