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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - CMD Перемещение каталогов с длинными именами.

Ответить
Настройки темы
CMD/BAT - CMD Перемещение каталогов с длинными именами.

Новый участник


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

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


Здравствуйте всем!

Помогите пожалуйста с созданием BAT-ника для автоматизации.

На работе один сервер каждый день генерирует папку с файлами (Info_User data_2018-1-9-8-2-17_ImmdTask12-Compressed) в 8:00 утра.
Пароль и логин сервера, простым юзерам небезопасно. Нужно чтобы один компьютер перемещал ежедневные генерированные папки с определенным именем с сервера на свою директорию.
Но так как данное имя папки ежедневно меняется структура * в move не работает. При копирование с XCOPY копируется все данные включая и старые папки сгенерированные в прошлые дни.
Хотелось бы чтобы перемещались папки а не копировались, как указал ниже?

Xcopy /E /S /I /Y \\10.1.0.1\d$\data\Info* D:\test\info_%date%
Xcopy /E /S /I /Y \\10.1.0.2\d$\data\Info* D:\test\info_%date%

Отправлено: 14:58, 11-01-2018

 

Новый участник


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

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


Цитата megaloman:
Копирование за сегодня с удалением исходных файлов
Код:
@Echo Off
cls
Set "BoxIn=Z:\Box_In\VLR"
Set "BoxArc=Z:\Box_Arc"
Set "ArcName=VLR_"
FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "Tdate=%%d"
Set "Tdate=%Tdate:~0,8%"
Set "DXcopy=%TDate:~4,2%-%TDate:~6,2%-%TDate:~0,4%"
Pushd "%BoxIn%"
FOR /F "usebackq tokens=1,2 delims=>" %%i In (`xcopy /S /I /Y /F /D:%DXcopy% *.* "%BoxArc%\%ArcName%%TDate%"`) DO Call :DelCopy "%%i" "%%j"
Popd
GoTo :Eof
:DelCopy
If "%~2"=="" GoTo :Eof
Set "File1=%~1"
Set "File1=%File1:~0,-2%"
Set "File2=%~2"
Set "File2=%File2:~1,9999%"
If Exist "%File2%" Del "%File1%"
GoTo :Eof
Пустые папки не рискнул удалять, не зная задачи подробно »
Ссори не совсем получается когда указываю сетевой путь


\\172.28.246.10\d$\VLROutPut\* --> сетевой путь откуда брать
D:\Stat\VLR_ --> папка для хранения

насчёт удалении можно все что находится в той папке удалять.

Отправлено: 13:44, 24-01-2018 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Ветеран


Contributor


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

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


Цитата deluxe9999:
\\172.28.246.10\d$\VLROutPut\* »
так делать низьзя!
Можно
Код: Выделить весь код
Set "BoxIn=\\172.28.246.10\d$\VLROutPut"
Set "BoxArc=D:\Stat\VLR_"
в имени папки подстановочных знаков быть не может
Подозреваю, что не надо указывать подпапку, которую я выделил в Вашем пути красным цветом.
Она указывается в
Код: Выделить весь код
Set "ArcName=VLR_"
К VLR_ добавляется дата.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 24-01-2018 в 19:36.


Отправлено: 16:29, 24-01-2018 | #12


Новый участник


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

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


Цитата megaloman:
Код:
Set "BoxIn=\\172.28.246.10\d$\VLROutPut"
Set "BoxArc=D:\Stat\VLR_"
в имени папки подстановочных знаков быть не может
Подозреваю, что не надо указывать подпапку, которую я выделил в Вашем пути красным цветом.
Она указывается в »

Заработало спасибо!
Немного еще Вас побеспокою.
Если путей будет 2 или 3 есть возможность в скрипте сгруппировать, а не по отдельности вписывать скрипт каждому пути?
И как по возможности запаковать каждый в отдельный архив?
Возможно в скрипте чуток я почудил ))


Цитата:
Код:
Set "BoxIn1=\\172.28.246.10\d$\VLROutPut"
Set "BoxIn2=\\172.28.246.210\d$\VLROutPut"
Set "BoxArc=D:\Stat"
Set "ArcName=VLR_"

Set Rar="C:\Program Files (x86)\WinRAR\WinRAR.exe" a -r -df

FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "Tdate=%%d"
Set "Tdate=%Tdate:~0,8%"
Set "DXcopy=%TDate:~4,2%-%TDate:~6,2%-%TDate:~0,4%"
Pushd "%BoxIn1%"
FOR /F "usebackq tokens=1,2 delims=>" %%i In (`xcopy /S /I /Y /F /D:%DXcopy% *.* "%BoxArc%\%ArcName%%TDate%"`) DO Call :DelCopy "%%i" "%%j"
Popd
Pushd "%BoxIn2%"
FOR /F "usebackq tokens=1,2 delims=>" %%i In (`xcopy /S /I /Y /F /D:%DXcopy% *.* "%BoxArc%\%ArcName%%TDate%"`) DO Call :DelCopy "%%i" "%%j"
Popd

Отправлено: 11:17, 25-01-2018 | #13


Ветеран


Contributor


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

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


Если путей будет 2 или 3 есть возможность в скрипте сгруппировать, а не по отдельности вписывать скрипт каждому пути?
И как по возможности запаковать каждый в отдельный архив?
Код: Выделить весь код
@Echo Off
cls

Set "Arc=%ProgramFiles%\WinRar\WinRar.exe"
If Exist "C:\Program Files (x86)\WinRAR\WinRAR.exe" Set "Arc=C:\Program Files (x86)\WinRAR\WinRAR.exe"

FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "Tdate=%%d"
Set "Tdate=%Tdate:~0,8%"

Call :Archives "Z:\172.28.246.10\d$\VLROutPut" "Z:\Stat" "VLR_172.28.246.10_"
Call :Archives "Z:\172.28.246.210\d$\VLROutPut" "Z:\Stat" "VLR_172.28.246.210_"

GoTo :Eof

:Archives
	"%Arc%" a -r -m1 -df -Y -ed -ta%Tdate%000000 -ag%Tdate% "%~2\%~3.rar" "%~1\*.*"
GoTo :Eof
Если без архивирования и с удалением пустых папок, то
Код: Выделить весь код
@Echo Off
cls

FOR /F "tokens=2 delims==." %%d in ('WMIC OS GET LOCALDATETIME /VALUE') DO SET "Tdate=%%d"
Set "Tdate=%Tdate:~0,8%"
Set "DXcopy=%TDate:~4,2%-%TDate:~6,2%-%TDate:~0,4%"

Call :Archives "Z:\172.28.246.10\d$\VLROutPut" "Z:\Stat" "VLR_172.28.246.10_"
Call :Archives "Z:\172.28.246.210\d$\VLROutPut" "Z:\Stat" "VLR_172.28.246.210_"

GoTo :Eof

:Archives
	Pushd %1
	FOR /F "usebackq tokens=1,2 delims=>" %%i In (`xcopy /S /I /Y /F /D:%DXcopy% *.* "%~2\%~3%TDate%"`) DO Call :DelCopy "%%i" "%%j"
	For /F "Tokens=*" %%i In ('Dir /B /S /A:D 2^>nul^|Sort /R') Do RD "%%i" 2>nul
	Popd 
GoTo :Eof

:DelCopy
	If "%~2"=="" GoTo :Eof
	Set "File1=%~1" 
	Set "File1=%File1:~0,-2%"
	Set "File2=%~2" 
	Set "File2=%File2:~1,9999%"
	If Exist "%File2%" Del "%File1%"
GoTo :Eof

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 25-01-2018 в 13:32.

Это сообщение посчитали полезным следующие участники:

Отправлено: 12:13, 25-01-2018 | #14


Новый участник


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

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


Цитата megaloman:
Если путей будет 2 или 3 есть возможность в скрипте сгруппировать, а не по отдельности вписывать скрипт каждому пути?
И как по возможности запаковать каждый в отдельный архив? »

Спасибо огромное! Сработало.

Отправлено: 08:37, 30-01-2018 | #15



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - CMD Перемещение каталогов с длинными именами.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Перемещение файлов в папки с аналогичными именами londondron Скриптовые языки администрирования Windows 12 22-03-2017 15:22
CMD/BAT - Перемещение файлов с иерархией каталогов, по дате Yah0nt Скриптовые языки администрирования Windows 4 22-11-2016 12:52
CMD/BAT - [решено] скопировать несколько файлов с длинными кириллическими именами Nun-Nun Скриптовые языки администрирования Windows 3 31-08-2010 21:00
CMD/BAT - [решено] перемещение каталогов по списку neprotiv Скриптовые языки администрирования Windows 4 02-03-2010 09:39
[решено] Перемещение разрешений общих каталогов при миграция домена SuperBoss Microsoft Windows NT/2000/2003 6 17-09-2003 06:32




 
Переход