Показать полную графическую версию : [решено] Backup в папку с названаем в виде даты
Нужно детектировать файлы с расширением *.QXX в папке C:\soft\program\files\, затем создать в C:\soft\Backup\, каталог, с названием в виде даты, формата ГГ_ММ_ДД и копировать туда эти файлы.
Foreigner
18-02-2014, 18:02
@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
@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
я так понимаю, что красивая конструкция %DATE:~-2%_%DATE:~0,-8%_%DATE:~-7,2%
зависит от региональных установок и не универсальна )
Прошу прощения.
Писал вечером - мозг не работал.
Нужно создать в папке C:\soft\Backup\ папку c датой в том же формате, а в ней rin480.
т.к. в C:\soft\, есть ещё папки, к которой так же будет создан скрипт, который бэкапит их содержимое в ту же папку с датой, но с другими названиями папок.
Писал вечером - мозг не работал. »
Наверно, и у меня был тот же симптом: перепутал местами расширенные переменные, и у Вас создавалась папка с названием по формату даты "гг_дд_мм" вместо "гг_мм_дд". Правильный код такой:
@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
Нужно создать в папке 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".
Foreigner
19-02-2014, 18:51
я так понимаю, что красивая конструкция %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
я так понимаю, что красивая конструкция %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
Насколько он универсален и точен не скажу.
Насчёт powershell.
Как будет выглядить скрипт полностью на нём?
Foreigner
20-02-2014, 07:32
Насчёт 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"
}
Всем большое спасибо!
Всё сделал - работает.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.