Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как переместить папку с подкаталогами и со всеми файлами (http://forum.oszone.net/showthread.php?t=287307)

Insendio 31-08-2014 23:05 2396763

Как переместить папку с подкаталогами и со всеми файлами
 
Привет всем!
Помогите!! мне надо переместить файлы и каталоги(с подкаталогами внутри)
Например из "C:\Downloads\" в "C:\".
Нашел похожий код здесь в Озоне-->>, но код работает не так как мне надо... и иногда вообще не работает -_- (проверял)
Хотел переделать но никак не получается .. я совсем позабыл cmd коды -_-
В интернете нашел коды которые только копируют - не перемещают.
Жду вашей помощи -_-

Georgio 31-08-2014 23:17 2396766

Код:

@robocopy "C:\Downloads" "C:\" /dcopy:dat /e /move
Запускать от имени администратора!

Insendio 01-09-2014 03:36 2396830

Спасибо но код дает ошибку связанную с именами..
Цитата:

Цитата Ошибка
C:\Users\User>D:\1\move.bat

-------------------------------------------------------------------------------
ROBOCOPY :: Robust File Copy for Windows
-------------------------------------------------------------------------------

Начало: Mon Sep 01 04:31:41 2014

Источник : D:\1\1\
Назначение : D:\1" \dcopy:dat \e \move\

Файлы: *.*

Параметры: *.* /COPY:DAT /R:1000000 /W:30

------------------------------------------------------------------------------

2014/09/01 04:31:42 ОШИБКА 123 (0x0000007B) Доступ к папке назначения D:\1" \dco
py:dat \e \move\
Синтаксическая ошибка в имени файла, имени папки или метке тома.

C:\Users\User>


Georgio 01-09-2014 06:08 2396835

Цитата:

Цитата Insendio
код дает ошибку связанную с именами »


Insendio, кавычки неправильно расставили. Надо так:
Код:

@robocopy "D:\1\1" "D:\1" /dcopy:dat /e /move
.



Цитата:

Цитата Insendio
Цитата:

C:\Users\User>D:\1\move.bat
»


Insendio, не называйте пакетный файл именами команд, а то когда-нибудь его зациклите.

Insendio 01-09-2014 12:30 2396944

Georgio[/q],

Ругается на "/dcopy:dat"

Цитата:

ОШИБКА: Недопустимый параметр #3 : "/dcopy:dat"
Но я заменил его на /COPY:DAT, потом на /DCOPY:T но в результате он копирует и потом удаляет и это операция занимает очень много времени...
А как сделать так чтоб он быстро переместил все файлы как Total Commander ?

Спасибо!

Insendio 02-09-2014 13:25 2397356

Вопрос всё еще не решен ! Жду ваших вариантов ...

megaloman 02-09-2014 13:47 2397368

Код:

@Echo Off
SetLocal EnableExtensions EnableDelayedExpansion

Set "From=Z:\Downloads\"
Set "To=Z:\"

Move /Y "%From%*.*" "%To%" >nul 2>nul

For /F "Tokens=*" %%A In ('Dir "%From%*.*" /B /S /A:D 2^>nul^|Sort /R') Do (

        Set "Out=%%A"
        Set "Out=!Out:%From%=%To%!"
        md "!Out!" 2>nul
        Move /Y "%%A\*.*" "!Out!\" >nul 2>nul
        RD "%%A" 2>nul

)

Скрытые и read-only файлы обрабатываться не будут и, соответственно, папки, в которых они лежат, удалены не будут

Georgio 02-09-2014 14:53 2397410

Цитата:

Цитата Insendio
Цитата:

ОШИБКА: Недопустимый параметр #3 : "/dcopy:dat"
»



Для старых версиях "robocopy.exe" действительно нужно писать только "/dcopy:t". Новая версия допускает оба варианта: "/dcopy:t" и "/dcopy:dat".




Цитата:

Цитата megaloman
Скрытые и read-only файлы обрабатываться не будут и, соответственно, папки, в которых они лежат, удалены не будут »



Вот так будет перемещено всё:


Код:

@echo off

set "source=C:\Downloads"
set "destination=C:"

for /f "tokens=1,2 delims=:" %%i in ('attrib /d /s "%source%\*"') do (
 set var=%%i
 call set var=%%var:~3,2%%
 call set var=%%var:S=$s %%
 call set var=%%var:H=$h %%
 call attrib %%var:$=-%% "%source%\%%~nxj">nul
 move "%source%\%%~nxj" "%destination%">nul 2>&1
 call attrib %%var:$=+%% "%destination%\%%~nxj">nul
 )

exit /b


.


Учитывая, что перемещение файлов будет происходить на диск "C", пакетный файл необходимо запускать от имени администратора.

Insendio 03-09-2014 18:16 2397953

Georgio и megaloman, Спасибо вам ! Всё работает в штатном режиме)


Время: 13:47.

Время: 13:47.
© OSzone.net 2001-