С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
Spin
0 / 0 / 0
Регистрация: 16.01.2013
Сообщений: 3
1

Перемещение файлов с заданным расширением со всего логического диска в создаваемый каталог

16.01.2013, 19:37. Просмотров 6316. Ответов 33
Метки нет (Все метки)

Всем привет! подсобите пожалуйста кто шарит!)

Сценарий перемещает временные файлы (.tmp) со всего логического диска в создаваемый каталог. Показать содержимое этого каталога. Имя логического диска и путь к создаваемому каталогу задаются, как параметры запуска сценария.
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2013, 19:37
Ответы с готовыми решениями:

Перемещение всех файлов с заданным расширением
Нужен BAT скрипт который делает следующие: 1.Заходит в папку А 2.Вырезает все...

Сценарий,перемещение файлов с заданным расширением BAT
Здравствуйте, столкнулся с несколькими вопросами при написании сценария. ...

Создать командный файл для копирования файлов с заданным именем и расширением .PAS и .EXE в созданный каталог
Хотелось бы узнать как создать командный файл для копирования файлов с...

Поиск файлов с заданным расширением
Здравствуйте!!! Я только начал знакомиться с bat-файлами и вот дали такое...

Копирование файлов с заданным расширением
Здраствуйте. Прошу помочь в решении задачи. Нужно создать командный файл,...

33
run82
4 / 4 / 0
Регистрация: 27.02.2013
Сообщений: 101
20.03.2013, 20:07 21
Dragokas, спасибо!! Сегодня тестил все работает четко!
0
run82
4 / 4 / 0
Регистрация: 27.02.2013
Сообщений: 101
23.03.2013, 01:56 22
Dragokas, подскажите как добавить в данном батнике возможность ведения log-файла работы батника? Например можно ли чтобы после отработки батника на диске с:\ создавался файл log.txt содержащий время и дату копирования файла, имя копируемого файла, и откуда куда был скопирован файл?

Добавление в конце 35-й строки данной команды
Bash
1
>>c:\log.txt
Bash
1
copy "%%~A" "%To%\!NewName!" >nul >>c:\log.txt
приводит всего лишь к данному результату
0
Миниатюры
Перемещение файлов с заданным расширением со всего логического диска в создаваемый каталог  
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,914
Записей в блоге: 16
23.03.2013, 02:43 23
Обратите внимание на строки 32, 34 последнего кода. Они попадают на экран.
Можете их продублировать с перенаправлением в файл. В той же строке можете использовать переменные %date% и %time%.
1
blees
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 17
10.02.2016, 11:58 24
А не подскажите, можно ли модернизировать скрипт, чтобы все копии дописывались в первый найденный файл с таким же именем?
0
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,914
Записей в блоге: 16
10.02.2016, 19:34 25
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@echo off
Setlocal EnableExtensions EnableDelayedExpansion
 
::Искомое расширение файлов
Set Ext=*.txt
 
::Откуда копировать
Set From=c:\temp
 
set "qt=""
for /f "delims=" %%A in ('dir /b /s /a:-d-l "%From%\%Ext%"') do (
  if defined "%%~nxA" (
    type "%%A" >> "!"%%~nxA"!"
  ) else (
    set "!qt!%%~nxA!qt!=%%A"
))
1
blees
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 17
11.02.2016, 17:52 26
Dragokas,
Нет, вот этого твоего скрипта.
Перемещение файлов с заданным расширением со всего логического диска в создаваемый каталог
0
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,914
Записей в блоге: 16
11.02.2016, 18:50 27
blees, с него и переделал. Вас смущает, почему код получился коротким?
Он делает именно то, что Вы написали, ну или я Ваше задание не понял.
0
blees
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 17
11.02.2016, 20:42 28
А он и правда работает, как я понял он дописывает всё к файлам находящимся в "первой" папке.

Но есть и косяк, в третью папку поместил файл с названием которого не было в "первой" и "второй" папке и он не скопировал этот файл в первую папку.
PS
а ну понятно, он дописывает всё в первый из файлов с "таким" именем.
После можно прогнать тот первый скрипт, только изменить его, чтобы наоборот файлы с совпадением по имени - не копировались =)
0
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,914
Записей в блоге: 16
11.02.2016, 20:54 29
Значит тогда еще проще:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
Setlocal EnableExtensions
 
::Искомое расширение файлов
Set Ext=*.txt
 
::Откуда копировать
Set From=c:\temp
 
::Куда копировать
Set To=c:\temp2
 
for /f "delims=" %%A in ('dir /b /s /a:-d-l "%From%\%Ext%"') do (
  if exist "%To%\%%~nxA" (
    type "%%A" >> "%To%\%%~nxA"
  ) else (
    copy "%%A" "%To%\%%~nxA"
))
Добавлено через 2 минуты
Цитата Сообщение от blees Посмотреть сообщение
А он и правда работает, как я понял он дописывает всё к файлам находящимся в "первой" папке.
Он никуда не копировал. Просто дописывал содержимое всех совпадающих по имени файлов к первым найденным в какой либо из папок.
1
blees
0 / 0 / 0
Регистрация: 09.02.2016
Сообщений: 17
11.02.2016, 20:54 30
Ого, огромное спасибо =)
0
kazmadan
2 / 2 / 0
Регистрация: 02.12.2013
Сообщений: 30
06.12.2016, 01:09 31
Добрый день, как отредактировать этот скрипт, чтобы он копировал только то чего нет? И что нужно сделать чтобы он работал по сети, а то у меня после редактирования не работает (скрины прилагаю)?
Спасибо за понимание, с уважением Василий.
0
Миниатюры
Перемещение файлов с заданным расширением со всего логического диска в создаваемый каталог   Перемещение файлов с заданным расширением со всего логического диска в создаваемый каталог  
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,914
Записей в блоге: 16
07.12.2016, 18:30 32
Такие большие файлы лучше копировать через утилиту robocopy. Там поддерживается возобновление закачки, если возникнут потери по сети.
Совместимость: Windows Vista и новее.

Соответственно, код ниже не будет переименовывать файлы при совпадении имени,
т.к. совпадение имени взято как признак, скопирован файл, или ещё нет.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
@echo off
SetLocal EnableExtensions
 
:: исходная папка
set sourceFolder=\\vmware-host\Shared Folders\Shared\_Received\_AVZ\avz4
 
:: целевая папка
set destination=c:\temp
 
robocopy /? |>NUL find "/J ::" && set nonBuf=/J
 
echo [ Enumerating files ]  Please, wait ... 
 
For /F "delims=" %%a in ('dir /b /s /a-d "%sourceFolder%\*"') do (
 
  if not exist "%destination%\%%~nxa" call :robo "%%~dpa" "%%~nxa" "%destination%"
 
)
pause
goto :eof
 
:robo [sourceFolder] [sourceFile(s)] [destination] 
 
:: /Z :: Копирование файлов с возобновлением.
:: /J :: Копирование с использованием небуферизованного ввода-вывода (рекомендуется для больших файлов).
:: /R:n :: Число повторных попыток для неудавшихся копий
:: /W:n :: Время ожидания между повторными попытками
:: /TBD :: Ждать, пока будут определены имена общих ресурсов (ошибка повторной попытки 67).
:: /LOG+:файл :: Записывать состояние в файл журнала (добавлять к существующему журналу).
:: /TEE :: Направлять выходные данные в окно консоли и в файл журнала.
:: /ETA :: Показывать оценку времени окончания копирования файлов.
:: /FP :: Включать в вывод полные пути файлов.
 
set "sourceFolder=%~1"
 
robocopy "%sourceFolder:~,-1%" "%~3" "%~2" /Z /R:3 /W:5 /TBD /LOG+:copy.log /TEE /ETA /FP /NJH /NJS /NDL %nonBuf%
exit /b
1
kazmadan
2 / 2 / 0
Регистрация: 02.12.2013
Сообщений: 30
03.01.2017, 23:51 33
Dragokas, Спасибо, ваш скрипт прекрасно работает, но как сделать чтобы он поддерживал русские буквы и пробелы в названиях папок и файлов?
0
Миниатюры
Перемещение файлов с заданным расширением со всего логического диска в создаваемый каталог  
Dragokas
Эксперт WindowsАвтор FAQ
17031 / 7089 / 857
Регистрация: 25.12.2011
Сообщений: 10,914
Записей в блоге: 16
03.01.2017, 23:57 34
Он поддерживает. Нужно сохранить скрипт в кодировке OEM-866.
1
03.01.2017, 23:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.01.2017, 23:57

Переименование файлов с заданным расширением
Нужно переименовать большое количество файлов *.xls в например таблица.xls....

Копирование файлов с заданным расширением по расписанию
Здравствуйте. Помогите пожалуйста с задачками по командной строке. 2.2.9...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru