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

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

Ответить
Настройки темы
CMD/BAT - [решено] Backup в папку с названаем в виде даты

Аватара для i-Lex

Старожил


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


Конфигурация

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


Изменения
Автор: i-Lex
Дата: 18-02-2014
Нужно детектировать файлы с расширением *.QXX в папке C:\soft\program\files\, затем создать в C:\soft\Backup\, каталог, с названием в виде даты, формата ГГ_ММ_ДД и копировать туда эти файлы.

Отправлено: 12:13, 18-02-2014

 

Ветеран


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

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


Код: Выделить весь код
@echo off
setlocal

pushd "c:\soft\program\files" || goto:eof

for /f "tokens=*" %%i in ('dir /b *.qxx') do (

    2>nul md "c:\soft\backup\%date:~-2%_%date:~3,2%_%date:~0,2%"
    copy "%%i" "c:\soft\backup\%date:~-2%_%date:~3,2%_%date:~0,2%"

)

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

Отправлено: 18:02, 18-02-2014 | #2



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

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


Ветеран


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

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


Код: Выделить весь код
@echo off
set Folder_Name=%DATE:~-2%_%DATE:~0,-8%_%DATE:~-7,2%
if not exist "C:\soft\Backup\%Folder_Name%" (
 md "C:\soft\Backup\%Folder_Name%"
)
set m=0
set n=0
for /r "C:\soft\program\files\" %%i in (*.QXX) do (
 set /a m+=1
 copy "%%i" "C:\soft\Backup\%Folder_Name%">nul 2>&1&& set /a n+=1
)
echo The %m% files were found.
echo The %n% files were copied.
pause>nul

Последний раз редактировалось Georgio, 18-02-2014 в 18:51.

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

Отправлено: 18:04, 18-02-2014 | #3


Ветеран


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

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


я так понимаю, что красивая конструкция %DATE:~-2%_%DATE:~0,-8%_%DATE:~-7,2%
зависит от региональных установок и не универсальна )

-------
консольный клиент telegram для Windows: www.elapser.info


Отправлено: 11:06, 19-02-2014 | #4


Аватара для i-Lex

Старожил


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

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


Прошу прощения.
Писал вечером - мозг не работал.
Нужно создать в папке C:\soft\Backup\ папку c датой в том же формате, а в ней rin480.
т.к. в C:\soft\, есть ещё папки, к которой так же будет создан скрипт, который бэкапит их содержимое в ту же папку с датой, но с другими названиями папок.

Отправлено: 17:18, 19-02-2014 | #5


Ветеран


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

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


Цитата i-Lex:
Писал вечером - мозг не работал. »
Наверно, и у меня был тот же симптом: перепутал местами расширенные переменные, и у Вас создавалась папка с названием по формату даты "гг_дд_мм" вместо "гг_мм_дд". Правильный код такой:

Код: Выделить весь код
@echo off
set Folder_Name=%DATE:~-2%_%DATE:~-7,2%_%DATE:~0,-8%
if not exist "C:\soft\Backup\%Folder_Name%" (
 md "C:\soft\Backup\%Folder_Name%"
)
set m=0
set n=0
for /r "C:\soft\program\files\" %%i in (*.QXX) do (
 set /a m+=1
 copy "%%i" "C:\soft\Backup\%Folder_Name%">nul 2>&1&& set /a n+=1
)
echo The %m% files were found.
echo The %n% files were copied.
pause>nul

Цитата i-Lex:
Нужно создать в папке C:\soft\Backup\ папку c датой в том же формате, а в ней rin480. »
Код: Выделить весь код
@echo off
set Folder_Name=%DATE:~-2%_%DATE:~-7,2%_%DATE:~0,-8%\rin480
if not exist "C:\soft\Backup\%Folder_Name%" (
 md "C:\soft\Backup\%Folder_Name%"
)
set m=0
set n=0
for /r "C:\soft\program\files\" %%i in (*.QXX) do (
 set /a m+=1
 copy "%%i" "C:\soft\Backup\%Folder_Name%">nul 2>&1&& set /a n+=1
)
echo The %m% files were found.
echo The %n% files were copied.
pause>nul
Ничего менять не пришлось, кроме значения переменной "Folder_Name".

Отправлено: 17:55, 19-02-2014 | #6


Ветеран


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

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


Цитата Опиум:
я так понимаю, что красивая конструкция %DATE:~-2%_%DATE:~0,-8%_%DATE:~-7,2%
зависит от региональных установок и не универсальна ) »
Да, это так. Просто не хотелось дергать за wmi:
Код: Выделить весь код
@echo off
setlocal

set "wmi=wmic path win32_localtime get * /value"

for /f %%i in (' "%wmi%" ') do 1>nul set "%%i"

set /a year-=2000
set /a month+=100
set /a day+=100

echo %year%_%month:~-2%_%day:~-2%
Или пользоваться другими средствами автоматизации, например PowerShell:
Код: Выделить весь код
$d = get-date -u '%y_%m_%d'
$d
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:51, 19-02-2014 | #7


Ветеран


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

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


Цитата Опиум:
я так понимаю, что красивая конструкция %DATE:~-2%_%DATE:~0,-8%_%DATE:~-7,2%
зависит от региональных установок и не универсальна ) »

Возможен такой вариант:

Код: Выделить весь код
@echo off
set "#=[0-3][0-9][\.\/][0-1][0-9][\.\/][0-9]*#%DATE:~-2%_%DATE:~3,2%_%DATE:~0,2%"
set "##=[1-9][\.][1-9][\.][0-9][0-9]#%DATE:~-2%_0%DATE:~2,1%_0%DATE:~0,1%"
set "###=\<[1-9][\.][0-1][0-9][\.][0-9][0-9]#%DATE:~-2%_%DATE:~2,2%_0%DATE:~0,1%"
set "####=[0-3][0-9][\.][1-9][\.][0-9][0-9]#%DATE:~-2%_0%DATE:~3,1%_%DATE:~0,2%"
set "#####=[0-9][0-9][0-9][0-9][\-][0-1][0-9][\-][0-3][0-9]#%DATE:~2,2%_%DATE:~5,2%_%DATE:~8,2%"
for /f "tokens=1,2 delims=#=" %%i in ('set #') do (
 date /t|>nul findstr /rc:"%%i"&& set Date_Format=%%j
)
echo %Date_Format%
pause>nul
Насколько он универсален и точен не скажу.

Отправлено: 19:35, 19-02-2014 | #8


Аватара для i-Lex

Старожил


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

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


Насчёт powershell.
Как будет выглядить скрипт полностью на нём?

Отправлено: 02:57, 20-02-2014 | #9


Ветеран


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

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


Цитата i-Lex:
Насчёт powershell.
Как будет выглядить скрипт полностью на нём? »
Код: Выделить весь код
$d = get-date -uformat "%y_%m_%d"

get-childitem 'c:\soft\program\files\*.qxx' | % { 

	if ( !( test-path "c:\soft\backup\$d" )) { new-item -type directory "c:\soft\backup\$d" }
	copy-item $_ "c:\soft\backup\$d"

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

Отправлено: 07:32, 20-02-2014 | #10



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Cоединил папку Мои документы и папку пользователя Fout Microsoft Windows 7 6 30-03-2022 09:44
Общее - Чем лучше очистить папку Backup Imperator Mad Автоматическая установка Windows 11 / 10 / 8 / 7 / Vista 2 24-03-2012 16:02
V. 2010 - коректный backup и правильное востановление из backup'a God-of-Chaos Microsoft Exchange Server 1 26-05-2011 14:23
[решено] GUICtrlCreateDate-получение даты в числовом виде TERMINAL AutoIt 1 13-04-2011 14:44
Блог - Как добавить в контекстное меню пункты “Копировать в папку” и “Переместить в папку” Vadikan Microsoft Windows 7 2 28-11-2010 22:09




 
Переход