|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Перемещение Папки с файлами |
|
|
CMD/BAT - [решено] Перемещение Папки с файлами
|
Новый участник Сообщения: 3 |
Здравствуйте уважаемые!
помогите пожалуйста, нужен батник для перемещение папки с файлами например: нужно переместить папку C:\UTM\transporter\transportDB D:\Server\Fasa2\UTM\transporter |
|
Отправлено: 12:52, 17-02-2019 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Вариант (если папка назначения уже существует и в ней есть файлы с теми же именами, что перемещаются сюда — то будет появляться запрос на замену таких файлов; для замены без подтверждения, как и для замены файлов с атрибутом "только для чтения", потребуются дополнительные ключи для команды xcopy):
setlocal set sourcedir=C:\UTM\transporter\transportDB set destdir=D:\Server\Fasa2\UTM\transporter if not exist "%destdir%\nul" md "%destdir%" xcopy "%sourcedir%" "%destdir%\" /E /H /K REM RD /S /Q "%sourcedir%" Ну и для подавления вывода на экран можно добавить первой строкой: @echo off. |
------- Последний раз редактировалось mwz, 17-02-2019 в 14:01. Отправлено: 13:54, 17-02-2019 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать mwz спасибо, все сработало, вложенные папки и файлы скопированы а старая папка удалена!
|
Отправлено: 19:30, 17-02-2019 | #3 |
Пользователь Сообщения: 87
|
Профиль | Отправить PM | Цитировать |
Отправлено: 21:28, 18-02-2019 | #4 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Patroklos:
Поскольку в каждой существующей папке можно обратится к псевдофайлу nul, то если папка существует — то и файл этот будет найден, а если папки такой нет — то и псевдофайл найден не будет. Сейчас определение существования конкретной папки делается проще — но приведённая конструкция универсальна и работает хоть в Windows 3.1, хоть в Windows 10. |
||
------- Отправлено: 21:52, 18-02-2019 | #5 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать mwz,
можете пояснить как это работает, когда возможно что "A\nul" существует? @echo off if exist "A\nul" (echo "A\nul") else (echo Not "A\nul") echo: if exist "A" (echo "A") else (echo Not "A") pause>nul Файл 156555 одновременно с одним именем папку и файл без расширения в одной директории не разместить. безо всякого вреда создать папку без вопросов (если есть) проще так: 2>nul md A, но опять же при наличии файла без расширения с именем A (или а) папка тоже не будет создана, но ошибки не будет выведено, естественно. |
Последний раз редактировалось alpap, 11-04-2020 в 14:56. Отправлено: 23:04, 18-02-2019 | #6 |
Ушел из жизни Сообщения: 8595
|
Профиль | Сайт | Отправить PM | Цитировать alpap, хм... Спасибо!
Насчёт файла и папки с одинаковым именем понял, учту (мог и не учесть в других случаях; здесь же при использовании \nul предполагалось, что проверено будет наличие именно папки). И придётся менять свои воззрения: значит nul теперь не во всех конструкциях может быть использован (благо в данном случае к проблемам не привело)... А файл и папка, скажем, A, тогда при проверке должны разделяться проверкой существования A\ и A , причём для проверки наличия папки достаточно проверить наличие только A\, а файла — наличие A при отсутствии A\ Я вроде правильно понял? |
------- Отправлено: 00:42, 19-02-2019 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать mwz, alpap,
Цитата mwz:
Вот тестовый батник
@Echo Off
cls
Set "destdir=Z:\kuku1"
2>nul Rd /S /Q %destdir%
If Not Exist "%destdir%\nul" (md "%destdir%" &Echo kuku11)
If Not Exist "%destdir%\nul" (md "%destdir%" &Echo kuku12)
Echo -------------------------------------------------
Set "destdir=Z:\kuku2"
2>nul Rd /S /Q %destdir%
If Not Exist "%destdir%" (md "%destdir%" &Echo kuku21)
If Not Exist "%destdir%" (md "%destdir%" &Echo kuku22)
pause
GoTo :Eof
Вот результат
Надо поберечься. Вот вариант решения. Непустые папки удалены не будут
@Echo Off Set "FoldIn=C:\UTM\transporter\transportDB" Set "FoldOut=D:\Server\Fasa2\UTM\transporter" Call :FileMove "%FoldIn%" "%FoldOut%" For /F "usebackq delims=" %%i In (`2^>nul Dir "%FoldIn%" /B /S /A:D ^|Sort /R`) Do 2>nul Rd "%%i" 2>nul Rd "%FoldIn%" GoTo :Eof :FileMove If Not Exist "%~2\%~nx1" Md "%~2\%~nx1" FOR /F "usebackq delims=" %%f IN (`2^>nul Xcopy /H /E /R /D /F %1 "%~2\%~nx1\"`) DO ( Set "SS=%%f" Call :Xdel "%%SS: -> =" "%%" ) Exit /B :XDel If Exist %2 Del %1 GoTo :Eof |
|
------- Последний раз редактировалось megaloman, 19-02-2019 в 01:46. Отправлено: 00:53, 19-02-2019 | #8 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата mwz:
|
|
Отправлено: 01:51, 19-02-2019 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Самым правильным будет проверка существования как целевого каталога, так и одноимённого с ним файла, потому для каталога используем имя «"%destdir%\."», для файла — чистый «"%destdir%», потому как а) кроме каталога %destdir% там может существовать и файл %destdir%, б) точка — реально существующее в каталоге файловой системы имя каталога, ссылающееся на сам этот каталог, равно как «..» — ссылка на родительский каталог. «.» существует в любом каталоге, в том числе и в корневом, «..» — существует в любом каталоге, кроме корневого.
Update: собственно, коллеги выше уже всё разжевали. Когда-нибудь я научусь сначала дочитывать тему до конца, и только потом «кидаться в бой» ![]() |
Отправлено: 04:54, 19-02-2019 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Создать zip архив папки с подпапками и файлами без корневой папки | blackeangel | Программирование в *nix | 1 | 02-02-2017 10:31 | |
Папки с файлами сами удалились | RusW | Флейм | 4 | 20-11-2015 20:13 | |
7 / 2008 R2 - Перемещение папки Users в Windows 7 | bab00n | Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista | 28 | 17-03-2015 12:11 | |
CMD/BAT - Групповое перемещение папок с файлами. | DimaKitov | Скриптовые языки администрирования Windows | 2 | 15-08-2014 16:01 | |
Разное - [решено] Перемещение папки Users | nikkor7 | Microsoft Windows Vista | 2 | 13-04-2009 11:58 |
|