EdithMS Ответов: 2

Перемещение файлов с помощью MOVE или Robocopy с переменным источником и назначением


Привет

Мне нужно переместить все файлы из одного каталога в другой и знать путь в случае ошибки

У меня есть два простых пакетных файла:

в пакетный файл, с ходу работает :
move %1 %2

но в робокопии :
robocopy %1 %2

не работает

есть предложения ?

мне нужна робокопия, потому что выходные данные журналов посылают мне путь с ошибками, а перемещение-нет

у меня есть два простых пакетных файла

1.
move %1 %2 >> D:\test\log_good.txt 2>>D:\test\log_error.txt   

Он работает, но журнал не показывает путь

это мой простой скрипт и его работы ! но мне нужно увидеть в журналах путь источника и назначения
на данный момент log_good-это: 1 перемещенный файл

а log_errors-это:
The system cannot find the file specified.
or
The process cannot access the file because it is being used by another process.

Мне нужно знать, в каком пути возникает ошибка, но я не знаю, как установить переменные %1 (мой источник) и %2 (Мой пункт назначения) в моих журналах

2.

В этом случае:
robocopy %1 %2 /MOV /LOG+:D:\test\mueve.txt

не работает мой журнал, покажите мне путь, но не перемещайте файл, и разрешения правильные...
-------------------------------------------------------------------------------
   ROBOCOPY     ::     Robust File Copy for Windows
-------------------------------------------------------------------------------

  Started : Wed Aug 19 12:40:07 2015

   Source : \\diva-disk.mam\tvsa_inter\discos-duros_rz\prueba_mueve_tmp\MARIA_LA_DEL_BARRIO-130-201002232705_DV50_3_prueba_mueve.avi\
     Dest : \\diva-disk.mam\tvsa_inter\discos-duros_rz\prueba_mueve\

    Files : *.*

  Options : *.* /COPY:DAT /MOVE /R:1000000 /W:30

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

2015/08/19 12:40:07 ERROR 267 (0x0000010B) Accessing Source Directory \\diva-disk.mam\tvsa_inter\discos-duros_rz\prueba_mueve_tmp\MARIA_LA_DEL_BARRIO-130-201002232705_DV50_3_prueba_mueve.avi\
The directory name is invalid.

2 Ответов

Рейтинг:
18

Richard Deeming

Для robocopy и источник, и назначение должны быть каталогами. Вы передаете путь к файлу, и robocopy правильно говорит вам, что это не каталог.

Для передачи определенных файлов используйте robocopy source_dir destination_dir file. Например:

robocopy \\diva-disk.mam\tvsa_inter\discos-duros_rz\prueba_mueve_tmp \\diva-disk.mam\tvsa_inter\discos-duros_rz\prueba_mueve MARIA_LA_DEL_BARRIO-130-201002232705_DV50_3_prueba_mueve.avi /MOV /LOG+:D:\test\mueve.txt


Чтобы использовать его в пакетном файле, используйте три параметра:
robocopy %1 %2 %3 /MOV /LOG+:D:\test\mueve.txt


Если приложение, вызывающее пакетный файл, не может передать каталог и имя файла отдельно, то вам нужно будет сделать это в пакетном файле. Google нашел этот[^], что, похоже, работает:
@echo off

For %%A in ("%1") do (
    Set Folder=%%~dpA
    Set Name=%%~nxA
)

robocopy %Folder% %2 %Name% /MOV /LOG+:D:\test\mueve.txt


EdithMS

спасибо за вашу помощь Мика и Ричард завтра я могу сделать тест используя эти три параметра
и я говорю, если бы это сработало

EdithMS

Привет, Мика, Ричард не работает :(

та же ошибка и с

robocopy %1 %2 %3 /MOV /LOG+:D:\test\mueve.txt

программы не переместить файл и посмотреть все пути как каталог

моя ошибка в журнале такова:


-------------------------------------------------------------------------------
ROBOCOPY :: надежная копия файлов для Windows
-------------------------------------------------------------------------------

Начало : СР 26 Августа 10:53:05 2015

Источник : \\diva-disk.mam\youtube_hd\2transcode_tmp\LA_SOMBRA_DEL_PASADO-118-201505154991_.mp4\
Дест : \\дива-диск.мам\youtube_hd\2transcode\

Архив : *.*

Опции : *.* /COPY:DAT /MOV /R:1000000 /W:30

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

2015/08/26 10:53:05 ошибка 267 (0x0000010B) доступ к исходному каталогу \\diva-disk.mam\youtube_hd\2transcode_tmp\LA_SOMBRA_DEL_PASADO-118-201505154991_.mp4\
Имя каталога недопустимо.

Richard Deeming

Вы все еще передаете только два аргумента в свой пакетный файл. Вам нужно передать каталог и имя файла отдельно.

YourBatchFile.bat \\diva-disk.mam\youtube_hd\2transcode_tmp \\diva-disk.mam\youtube_hd\2transcode LA_SOMBRA_DEL_PASADO-118-201505154991_.mp4

EdithMS

в моем приложении (Rhozet) примите эти аргументы

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

%jobguid% - уникальный идентификатор GUID для этой задачи
%jobname% - уникальное имя для этой задачи
%source% - полный путь к источнику и его имя
%destinationname% - путь назначения и имя файла (действительны только в уведомлениях о завершении)
%errormessage% - сообщение об ошибке (допустимо только в уведомлениях об ошибках)

Примечание: кавычка не является частью токена

Примеры текста командной строки:

c:\myprog.exe %источник%
c:\myprog.exe "%destinationname%"

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

когда я использую простой пакетный файл с этой строкой: переместить %1 %2

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

переместить %1 %2 >> D:\test\log_good.txt 2>>D:\test\log_error.txt

Он работает, но журнал не показывает путь

это мой простой скрипт и его работы ! но мне нужно увидеть в журналах путь источника и назначения
на данный момент log_good-это: 1 перемещенный файл

а log_errors-это:
Скрыть Код Скопировать
Система не может найти указанный файл.
или
Процесс не может получить доступ к файлу, поскольку он используется другим процессом.
Мне нужно знать, в каком пути возникает ошибка, но я не знаю, как установить переменные %1 (мой источник) и %2 (Мой пункт назначения) в моих журналах

мои исходные переменные и судьба его отправить на мое приложение (типа rhozet) ее для этого им используются параметры %1 для исходного и %2 для судьбы



Я попробую использовать robocopy, потому что пришлите мне путь в журнале, но не перемещайте файлы, потому что файл выглядит как папка ..


спасибо за помощь Ричард

Richard Deeming

Если вызывающее приложение не может отделить путь от имени файла, то вам нужно будет найти способ разделить путь в пакетном файле. Google нашел этот[^] который, кажется, делает свою работу:

@echo off

For %%A in ("%1") do (
Set Folder=%%~dpA
Set Name=%%~nxA
)

robocopy %Folder% %2 %Name% /MOV /LOG+:D:\test\mueve.txt

EdithMS

Ричард !!! так так так Благодарю вас так много !!!!!
это работает !!!!

EdithMS

Ричард

один вопрос, скрипт работает хорошо, скопируйте файл в каталог, а затем удалите файл источника, теперь в моем журнале появляется весь процесс с процентами-это очень-очень длинный журнал, как этот jejeje

-------------------------------------------------------------------------------
ROBOCOPY :: надежная копия файлов для Windows
-------------------------------------------------------------------------------

Начало : Чт 27 Августа 12:28:23 2015

Источник : \\diva-disk.mam\youtube_sd\2transcode_tmp\
Дест : \\дива-диск.мам\\youtube_sd 2transcode\

Файлы : TORMENTA_EN_EL_PARAISO-72-200807272963.mp4

Опции : /COPY:DAT /MOV /R:1000000 /W:30

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

1 \\diva-disk.mam\youtube_sd\2transcode_tmp\
Новый файл 2.4 g TORMENTA_EN_EL_PARAISO-72-200807272963.mp4
0.0%
0.0%
0.0%
0.1%
0.1%
0.2%
0.2%
0.2%
0.3%
0.3%
0.4%
0.4%
0.4%
0.5%
0.5%
0.6%
0.6%
0.6%
0.7%
0.7%
0.8%
................ продолжает......
99.9%
99.9%
99.9%
99.9%
99.9%
99.9%
99.9%
99.9%
99.9%
99.9%
99.9%
99.9%
100%

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

Всего скопировано пропущено несоответствие не удалось дополнительно
Dirs : 1 0 1 0 0 0
Файлы : 1 1 0 0 0 0
Байты : 20.461 g 20.461 g 0 0 0 0
Времена : 0:05:09 0:05:09 0:00:00 0:00:00


Скорость : 71019870 байт/сек.
Скорость : 4063,789 мегабайт/мин.

Окончено : Чт 27 Августа 12:37:41 2015



Существует ли какая-либо форма для suprime этой строки go the percentage ??

Еще раз спасибо Ричард

Richard Deeming

Если вы укажете /NP параметр, robocopy должен пропустить протоколирование прогресса.

robocopy %Folder% %2 %Name% /MOV /LOG+:D:\test\mueve.txt /NP

EdithMS

Вы правы

Извините за мой вопрос

Еще раз спасибо Ричард

Рейтинг:
1

Member 13509234

Мне очень понравилось ваше решение, но я хотел бы найти эту статью раньше, потому что теперь я перешел на GS Richchopy 360 и никогда не вернусь к использованию robocopy. Причина в том, что я должен был идти в Google каждый раз, когда я использовал его. Процесс становится трудоемким. Но GS Richcopy 360 дал мне свободу работать с простым в использовании графическим интерфейсом. Не нужно запоминать команды, параметры и многое другое. Человек это здорово, дайте ему попробовать! Спасибо!


CHill60

Итак, вы больше не используете его, но вам просто нужно было воскресить этот 2-летний пост, чтобы сказать об этом!