Показать полную графическую версию : Копирование файлов в 2 разные папки (bat)
Здравствуйте,
Столкнулся с трудностью: дано, некая папка, например "out". В нее скидываются файлы. Задача скопировать файлы из папки "out" в две другие, но в первую: "1" - файлы должны быть скопированы. Во вторую папку "2" те же файлы должны быть перемещены. В итоге папка "out" должна быть пустая. Задача осложняется еще тем, что в папку "out" бывает попадают файлы без расширения. Как сделать так, чтобы все вышеописанное заработало?
P.S. Хотел реализовать все с помощью bat, но может Вы посоветуете прогу...
Буду очень благодарен за помощь. Спасибо заранее.
copy "c:\Source\*.*" "c:\Destination1\*.*"
copy "c:\Source\*.*" "c:\Destination2\*.*"
del /f /q "c:\Source\*.*"
Спасибо за ответ.
Я реализовал почти также, просто вместо второго "сору" я использовал команду - "move". Проблема в том, что файлы без расширения не перемещаются во вторую папку. Может это команда "move" не поддерживает такое перемещение?
вместо второго "сору" я использовал команду - "move". »
Вы не указали, где расположены источник и приёмник, а «move»: а) работает только в пределах одного раздела и б) не наследует права для перенесённых файлов, посему я не счёл возможным его использовать.
Проблема в том, что файлы без расширения не перемещаются во вторую папку. »
Покажите Ваш код.
copy d:\out\*.* d:\archive\*.*
move d:\out\*.* d:\in\*.*
Kenwood, а где двойные кавычки (в "d:\out\*.*" и остальных)? Без них возможны проблемы при наличии файлов с пробелами в именах.
Каюсь, забыл )
А на что именно влияют кавычки. У меня и без них копирование происходило...
А на что именно влияют кавычки. »
Не помню как в данном случае (может быть при подстановочной группе *.* и пронесёт -- но именно пронесёт) -- но если не взять в кавычки имя с пробелами (берётся с путём к файлу, если он указан), то обработка имени завершится на этом пробеле, а следующая часть строки будет рассматриваться как самостоятельный параметр.
Создайте файл "test test.txt" в каком-либо каталоге, запустите командный процессор CMD и выполните три команды:copy "<путь_к_файлу>\test test.txt" "<тот_же_путь>\test1 test1.txt"(после чего в том же каталоге появится файл "test1 test1.txt" -- без кавычек, разумеется)
и
copy <путь_к_файлу>\test test.txt <тот_же_путь>\test2 test2.txt
и
copy "<путь_к_файлу>\test test.txt" <тот_же_путь>\test3 test3.txt-- и сравните результаты.
copy d:\out\*.* d:\archive\*.*
move d:\out\*.* d:\in\*.* »
move d:\out\*.* d:\in\
mwz, в данном конкретном случае нет необходимости — в пути пробельных символов нет (если, конечно, коллега Kenwood привёл реальные пути), а при подстановке в шаблоны это не влияет.
Но в целом всё обстоит именно так — лучше сразу привыкать обрамлять кавычками пути везде, независимо от «текущего случая».
Спасибо всем за помощь. Представленные мною пути реальные.
Я сменил содержимое батника на
copy "c:\Source\*.*" "c:\Destination1\*.*"
copy "c:\Source\*.*" "c:\Destination2\*.*"
del /f /q "c:\Source\*.*"
Теперь жду. Напомню, главное для меня, чтобы файлы без расширения тоже копировались в соотв папки
Limonica
05-02-2014, 10:04
Если они без расширения, зачем тогда ставишь? Правильный код:
copy d:\out\* d:\archive\*
move d:\out\* d:\in\*
Если они без расширения, зачем тогда ставишь? Правильный код: »
Limonica, не надо ничего изобретать. Это не 7-Zip.
Товарищи,
код
copy "c:\Source\*.*" "c:\Destination1\*.*"
copy "c:\Source\*.*" "c:\Destination2\*.*"
del /f /q "c:\Source\*.*"
не смог скопировать файл без расширения во вторую папку... (
Что можно еще попробовать?
Kenwood, что я:
До исполнения пакетного файла:
http://imageshack.com/a/img835/3784/t109.png
После исполнения пакетного файла:
http://imageshack.com/a/img534/7184/gh9x.png
Обратите внимание на файл «0003» — он без расширения.
делаю не так?
Код пакетного файла E:\Песочница\0358\0001.cmd:
@echo off
setlocal enableextensions enabledelayedexpansion
copy "E:\Песочница\0358\Source\*.*" "E:\Песочница\0358\Destination1\*.*"
copy "E:\Песочница\0358\Source\*.*" "E:\Песочница\0358\Destination2\*.*"
del /f /q "E:\Песочница\0358\Source\*.*"
endlocal
exit /b 0
Что можно еще попробовать? »
Можно показать скриншот с этим загадочным некопируемым файлом без расширения. Можно также привести результат команд «dir» и «dir /x» с этим файлом.
Я прогнал на стенде батник. Все отработало. Прикол в том, что файлы без расширения перебрасываются, но через раз. Эти файлы генерит сторонняя программа. Я предполагаю, что это как то связано с доступами на сам файл который создается.
Сейчас буду экспериментировать...
Всем спасибо большое за помощь
Прикол в том, что файлы без расширения перебрасываются, но через раз. Эти файлы генерит сторонняя программа <...> Сейчас буду экспериментировать... »
Я бы запустил эти три строки последовательно в окне CMD и посмотрел, в чём проблема (диагностическое сообщение типа "Не удалось скопировать файл" -- возможно что с причиной типа "Не доступа").
Кроме того, попробуйте в Свойствах батника (лучше -- ярлыка к нему, создав такой ярлык) поставить на закладке "Совместимость" галку "Выполнять от имени администратора".
Эти файлы генерит сторонняя программа. Я предполагаю, что это как то связано с доступами на сам файл который создается. »
А не открыт ли всё ещё этот файл на запись этой самой сторонней программой в тот момент, когда Вы пробуете исполнить код?
В точку. Это единственное объяснение проблемы. А это как я понимаю, не лечится... )
А это как я понимаю, не лечится... ) »
А каким образом это приложение создаёт файл? Что он собой представляет?
это файл с расширением ".in" Внутри набор символов для обработки другой программой. Мой бантик с интервалом сканит папку "out" и если там есть файл, перебрасывает его в другие две. Из папки "in" прога отсылает его по фтп на удаленную машину (файл локально удаляется после отсылки). А папка "archive" - это копия файла для меня.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.