1

Команда MOVE не работает, когда перезаписать каталог. Я также попытался запустить cmd с правами администратора. Я публикую этот вопрос с дополнительной информацией, чтобы вы могли легко проверить его самостоятельно.

Создайте свою собственную папку где-нибудь и откройте командное окно в этом месте. Затем скопируйте и вставьте этот блок в cmd-окно для создания тестовой структуры.

MD aaa\test\a
MD aaa\test\b
MD bbb\test\b
MD bbb\test\c
MD ccc\test\a
MD ccc\test\c
ECHO hello > aaa\test\a\a.txt
ECHO hello > aaa\test\b\b.txt
ECHO hello > bbb\test\b\b.txt
ECHO hello > bbb\test\c\c.txt
ECHO hello > ccc\test\a\a.txt
ECHO hello > ccc\test\c\c.txt

Теперь я хочу переместить и объединить все "тестовые" папки в «.\ Test»
Команда MOVE хороша, но в win 7 она не работает (Access Denied), когда перезаписывать существующие "папки". если вы сейчас попробуете следовать за блоком один за другим, первый будет в порядке, но следующий потерпит неудачу.

move /Y aaa\test .\
move /Y bbb\test .\
move /Y ccc\test .\

Однако я нашел другие решения, которые делают то же самое.

XCOPY aaa\test test\ /E/Y
XCOPY bbb\test test\ /E/Y
XCOPY ccc\test test\ /E/Y
RD aaa\test /Q/S
RD bbb\test /Q/S
RD ccc\test /Q/S

XCOPY, а затем удалить каталог

ROBOCOPY aaa\test test\ /E /IS /MOVE

ROBOCOPY с опцией /Move

COPY command is totally useless in this case...



Мне действительно нужна команда MOVE, чтобы получить командный файл с этим контентом, который работал в XP.

move /y "%1" c:\mydir\

Я попробовал robocopy, но тогда он будет перемещать только содержимое папки. не папка полностью.

robocopy "%1" c:\mydir /E /IS /MOVE

Если вы хотите помочь мне, то вы можете сделать это двумя способами ..
1) Найти решение, чтобы заставить MOVE работать как в XP
2) Найдите способ сделать то же самое, что делает ход /y "% 1" c:\mydir\


Предложение может быть, чтобы получить имя папки из пути и сделать что-то вроде этого

// %1 = "c:\anotherdir\cool"

if %1 is path_to_a_folder then (
   get %foldername of %1
   robocopy "%1" c:\mydir\%foldername /E /IS /MOVE
) else move /y "%1" c:\mydir\


РЕДАКТИРОВАТЬ: Эй, это отлично работает для каталогов, что еще я могу сделать, чтобы скрипт также мог работать с файлами?

robocopy %1 "C:\Users\azizkar\Desktop\ebben\%~n1" /E /IS /MOVE

2 ответа2

1

Наконец-то .. вот решение .. Спасибо за помощь, ребята :)

SET mydir=C:\mydir
IF EXIST "%mydir%\%~n1\" (
  ROBOCOPY %1 "%mydir%\%~n1" /E /IS /MOVE
) ELSE (
  MOVE /Y %1 "%mydir%\"
)
0

XXCopy будет моей рекомендацией.

Универсальная утилита для копирования файлов.

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