Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Contributor


Сообщения: 2728
Благодарности: 1697

Профиль | Отправить PM | Цитировать


mwz, alpap,
Цитата mwz:
if not exist "%destdir%\nul" md "%destdir%" »
Эта конструкция не рабочая. Без nul работает
Вот тестовый батник
Код: Выделить весь код
@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
Вот результат

Код: Выделить весь код
kuku11
Подпапка или файл Z:\kuku1 уже существует.
kuku12
-------------------------------------------------
kuku21
mwz, А удалять папку RD /S /Q "%sourcedir%" это крайне опрометчиво: допустим, xcopy не все файлы скопировал (например, места не хватило или путь недоступный указан).
Надо поберечься. Вот вариант решения. Непустые папки удалены не будут
Код: Выделить весь код
@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