26 (изменено: ruslan, 2016-08-31 18:28:54)

Re: CMD/BAT: Переместить созданный последним файл с новым именем

Flasher
На "cmd /k D:\backup\uso\Test1\This.bat" отвечает "файл не найден".

27

Re: CMD/BAT: Переместить созданный последним файл с новым именем

ruslan
Такое может быть только в случае, если в папке D:\backup\uso\Test1\ нет bak-файлов.
А, у меня в коде txt стояло, исправил.

28 (изменено: ruslan, 2016-09-01 11:39:42)

Re: CMD/BAT: Переместить созданный последним файл с новым именем

Flasher

@echo off
for /f %%# in ('dir D:\backup\uso\Test1\*.BAK /a-D/b/o-D/tC') do echo "%%#"&exit /b

Вот такой код отработал.
Написал : "uso_lgss222.bak" - это последний по времени создания файл.

29

Re: CMD/BAT: Переместить созданный последним файл с новым именем

@echo off
for /f %%# in ('dir D:\backup\uso\Test1\*.BAK /a-D/b/o-D/tC') do (
   echo xcopy /hrky "%%#" D:\backup\uso\Test\uso_lgss.bak
   goto:eof
)

Отвечает:

xcopy /hrky "uso_lgss222.bak" D:\backup\uso\Test\uso_lgss.bak

но ничего не копирует.

30 (изменено: ruslan, 2016-09-01 11:55:56)

Re: CMD/BAT: Переместить созданный последним файл с новым именем

Если добавить f| перед xcopy, то отвечает "не найден файл uso_lgss222.bak. Скопировано файлов 0."

31 (изменено: ruslan, 2016-09-01 12:29:22)

Re: CMD/BAT: Переместить созданный последним файл с новым именем

@echo off
for /f %%# in ('dir D:\backup\uso\Test1\*.BAK /a-D/b/o-D/tC') do (
   echo f|xcopy /hrky "D:\backup\uso\Test1\%%#" D:\backup\uso\Test\uso_lgss.bak
   goto:eof
)

Вот этот код отработал правильно. Спасибо !
Единственно что, если скрипт запускать прямо из агента, то упорно пишет "Не удается найти указанный файл". Но теперь, как минимум, есть выход через батник.

32

Re: CMD/BAT: Переместить созданный последним файл с новым именем

ruslan
Если батник находится рядом с файлами, то он должен был отработать и без указания прямых путей.
С агентом я бы пробовал так: C:\Windows\System32\cmd.exe /с D:\backup\uso\Test1\This.bat

33

Re: CMD/BAT: Переместить созданный последним файл с новым именем

Flasher

cmd /c for /f %# in ('dir \\srv-hv-1c-sql1\Backup-USO\*.bak /b/o-D') do xcopy /hrkxy "\\srv-hv-1c-sql1\Backup-USO\%#" "D:\backup\uso\Test\uso_lgss.bak"&exit

Вот такой код в агенте сработал, но единственно он работает, если только в в конечном пути уже есть файл uso_lgss.bak. Видимо не отрабатывает подавление вопроса.
А если через bat файл, то отработал код:

D:\backup\uso\Test1\This.bat

34

Re: CMD/BAT: Переместить созданный последним файл с новым именем

Flasher пишет:

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

Но почему то не отрабатывал.

35

Re: CMD/BAT: Переместить созданный последним файл с новым именем

for /f %# in ('dir \\srv-hv-1c-sql1\Backup-USO\1\*.bak /b/o-D') do xcopy /hrkxy "\\srv-hv-1c-sql1\Backup-USO\1\%#" "D:\backup\uso\Test\uso_lgss.bak"

Такой код в агенте тоже работает, но опять же если есть файл "uso_lgss.bak" .

36

Re: CMD/BAT: Переместить созданный последним файл с новым именем

ruslan пишет:

Видимо не отрабатывает подавление вопроса.

Так его и нету. echo f| - это и есть подавление (точнее подтверждение).

ruslan пишет:

А если через bat файл, то отработал код:

Вот и хорошо.

Настоятельно прошу не плодить посты, а дописывать в один (до ответа).

37 (изменено: ruslan, 2016-09-01 18:17:54)

Re: CMD/BAT: Переместить созданный последним файл с новым именем

Изначально у меня задача была следующая (может кому пригодится) :
каждое утро иметь копию рабочей БД на другом сервере.

Получилось 3 шага в задании Агента SQL сервера.
1. Шаг (тип CmdExec) - копирую по маске последний полный бэкап на новый сервер:

for /f %# in ('dir "\\полный сетевой путь\маска*.bak" /a-D/b/o-D/tC') do echo f|xcopy /hrkzy "\\полный сетевой путь\%#" "D:\backup\backup.bak" &exit

2. Шаг (тип T-SQL)- устанавливаю монопольный доступ к базе:

use master;
alter database everyday_backup set single_user with rollback immediate;
use everyday_backup;

3. Шаг (тип T-SQL)- непосредственно разворачивание БД

RESTORE DATABASE everyday_backup
FROM  DISK='D:\backup\backup.bak'
WITH   RECOVERY ,  REPLACE ,
MOVE 'everyday_backup_' TO 'D:\sql-base\everyday_backup.mdf',
MOVE 'everyday_backup_1' TO 'D:\sql-base\everyday_backup.ndf',
MOVE 'everyday_backup_2' TO 'D:\sql-log\everyday_backup.LDF'

38

Re: CMD/BAT: Переместить созданный последним файл с новым именем

Я всё-таки такие ключи советую прописать: /a-D/b/o-D/tC. Это исключит папки с расширением bak и в сортировке учтёт дату создания (как запрашивалось).
И обязательно нужно в конце прописать &exit, а то все маска*.bak будут копироваться.