Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 перенос строки через xp_cmdshell  [new]
tred_tred
Member

Откуда:
Сообщений: 32
есть два файл с текстом
содержимое копирую в третий файл
master..xp_cmdshell ' copy file1.txt file3.txt /y'

далее надо чтобы между текстами была пустая строка

типа

text from file1

text from file2

делаю
master.. xp_cmdshell 'echo '' >> file3.txt

и
master..xp_cmdshell 'copy file2.txt file3.txt /y'


но между текстами получается символ ''

если делать вместо '' \n, то в итоге выводит \n, тот же результат при \r\n
если
master.. xp_cmdshell 'echo '' >> file3.txt

то вообще выводи ECHO is on

никак не получается. подскажите как правильно?

так же после копирования в конце текста появляется стрелка вправо
как от нее избавиться?
28 мар 13, 23:04    [14110275]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
tred_tred
Member

Откуда:
Сообщений: 32
точне ECHO is on выводит после
master..xp_cmdshell 'echo>>file3.txt /y'
28 мар 13, 23:09    [14110284]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
echo.
28 мар 13, 23:31    [14110362]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
invm
Member

Откуда: Москва
Сообщений: 9646
Cygapb-007
echo.
Не поможет.

tred_tred,
Заведите себе файлик с пустой строкой и
type file1.txt > file3.txt
type BlankLine.txt >> file3.txt
type file2.txt >> file3.txt
А вообще, такие задачи другими средствами решают.
28 мар 13, 23:52    [14110423]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
invm, а почему не поможет?:) исстари для пустой строки юзали echo. ...
29 мар 13, 00:04    [14110456]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
invm
Member

Откуда: Москва
Сообщений: 9646
Cygapb-007,

Потому что только на экран. В файле будет "ECHO is on."
29 мар 13, 00:24    [14110486]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
invm, да вы что... Как говорится, "при всем уважении"... :)) в данном случае вы неправы:)
вот, когда появилась возможность (с год назад) отказаться от двд в пользу корзинки дисков, сваял... как бы это назвать...
знаете ли вы cmd? нет, я хочу спросить, знаете ли вы cmd так, как люблю его я?
ну, как-то так... и сорри, коньячек под вечерок - вкусно очень...
+ ежедневное резервирование бэкапов SQL и прочей мути средствами CMD на сетевых дисках
@echo off
rem Автоматическое архивирование заданных файлов и каталогов
rem с ведением протокола обработки в log-файле
rem Используется архиватор RAR в режиме командной строки
rem Исправления файла - в порядке поступления новых задач

rem Архив организован в виде дерева папок в формате
rem YYY1
rem MM1
rem YYY1MM1DD1_hhccss
rem .......
rem MMn
rem YYY1MMnDD1_hhccss
rem .......
rem YYY1MMnDDk_hhccss
rem .......
rem yyyymmdd_hhccss.log.txt
rem В конце - файл с последним протоколом обработки
rem (обновляется при каждом запуске)

rem Файл выполняется автоматически по расписанию задач сервера,
rem на котором он находится

rem -----------------------------------------------------------------
rem -----------------------------------------------------------------
rem -----------------------------------------------------------------
rem включает отложенное раскрытие переменных,
rem заключенных вместо %...% в !...!
rem
setlocal enabledelayedexpansion
rem
rem -----------------------------------------------------------------
rem -----------------------------------------------------------------
rem -----------------------------------------------------------------

rem ******** отладка
set debug=echo
set rar=echo RAR
rem ******** выполнение
set debug=rem
set rar=RAR
rem ********
set check=echo

rem Имя LOG-файла
set log=timing.log.txt

rem Сетевой ресурс с архивами SQL-сервера
set bakdir=\\SQLbackupSRV\BaseSystem\DailyBUP

rem Сетевой ресурс с рабочей версией Налогоплательщик-ЮЛ (EON)
set eon=\\GNIVC\Courier\Nalog_JL\INPUTDOC\

rem Сетевой ресурс с данными для отправки в ПФР
set taxcom=\\GNIVC\Taxcom\1Cv77\TaxDB2\

rem Сетевой ресурс с программой TaxCom Referent
set dipost=\\GNIVC\Taxcom\Dipost\

rem Сетевой ресурс с нерегулярными архивами SQL, нуждающимися в сохранении
set unRegular=\\unRegularServer\c$\otherBackUp\Saved

rem Папка с архивом истории изменений
set hist=%~dp0For save

rem ***************************************************************
rem ***************************************************************
rem ***************************************************************

rem Установка имен директорий на базе даты и времени запуска файла
set dirrez=%DATE: =0% %TIME: =0%
for /f "tokens=1-7 delims=/-:., " %%a in ( "%dirrez%" ) do (
set dirrez=%%c\%%b\%%c%%b%%a_%%d%%e%%f
set rootlog="%~dp0%%c%%b%%a_%%d%%e%%f.txt"
)
%debug% dirrez="%dirrez%", rootlog="%rootlog%"

rem ***************************************************************
rem ***************************************************************
rem ***************************************************************
rem goto test
rem ***************************************************************
rem ***************************************************************
rem ***************************************************************

rem Инициализация и заполнение LOG-файла
md %dirrez%
set log="%dirrez%\%log%"
%debug% log=%log%
echo Last run at %date% %time% >%log%
echo Backup created in %dirrez% >>%log%

rem Подготовка директории для архивирования
echo %date: =0%: backup files from %bakdir% >%log%
echo %time: =0%: Start of timing-log >>%log%
echo. >>%log%

rem goto step4

rem Обработка всех резервных копий SQL
%debug% path="%bakdir%"
for /d %%z in ("%bakdir%\*.*") do (
%debug% dir="%%z"
for %%y in ("%%z\*.bak") do (
%debug% file="%%y"
for /f "tokens=4-5 delims=\" %%a in ( "%%y" ) do (
rem Фиксация времени запуска
rem echo !time: =0!: Start "%%a\%%b" >>%log%
echo !time: =0!: Start "%%y" >>%log%

rem Архивирование
md "%dirrez%\%%a"
%check% rar a -ep "%dirrez%\%%a\%%~nb" "%%y"
%rar% a -ep "%dirrez%\%%a\%%~nb" "%%y"

rem echo !time: =0!: Stop "%%a\%%b" >>%log%
echo !time: =0!: Stop "%%y" >>%log%
echo. >>%log%
)
)
)

rem архивирование данных EON (Налогоплательщик-ЮЛ)
echo %time: =0%: Start %eon% >>%log%
%rar% a -r -ow %dirrez%\EON %eon%
echo %time: =0%: Stop %eon% >>%log%
echo. >>%log%

rem архивирование данных для ПФР
rem echo %time: =0%: Start %taxcom% >>%log%
rem %rar% a -r -ow %dirrez%\TAXCOM %taxcom%
rem echo %time: =0%: Stop %taxcom% >>%log%
rem echo. >>%log%

rem архивирование данных TaxCom-Referent
rem echo %time: =0%: Start %dipost% >>%log%
rem %rar% a -r -ow %dirrez%\DIPOST %dipost%
rem echo %time: =0%: Stop %dipost% >>%log%
rem echo. >>%log%

echo %time: =0%: End of timing-log >>%log%

echo.>>%log%
echo ***************************************************************>>%log%
echo ***************************************************************>>%log%
echo ***************************************************************>>%log%
echo.>>%log%
echo Check BAK-files in "%unRegular%" >>%log%
echo and compare with archives in "%hist%">>%log%
echo.>>%log%
echo Begin at %date: =0% %time: =0%>>%log%
echo.>>%log%


rem Обработка содержимого директорий {только первого уровня вложенности!}
rem содержащих файлы однократного резервирования, нуждающиеся в сохранении
for /d %%Z in (%unRegular%\*.*) do (
for %%Y in ("%%Z\*.bak") do (
for /f "tokens=1-5 delims=.: " %%a in ("%%~tY") do (
for /f "tokens=5-7 delims=\\." %%f in ("%%Y") do (
if not exist "%hist%\%%f\%%g.%%h`%%c-%%b-%%a`%%d-%%e`%%~zY.rar" (
for %%X in ("%hist%\%%f\%%g.%%h*") do (
%check% !time: =0!: ***WRONG*** "%%~nxX"
echo !time: =0!: ***WRONG*** "%%~nxX">>%log%
)
%check% Create "%%g.%%h`%%c-%%b-%%a`%%d-%%e`%%~zY.RAR"
echo Create "%%g.%%h`%%c-%%b-%%a`%%d-%%e`%%~zY.RAR">>%log%

echo Start at !time: =0! >>"%log%"
rem Архивирование
%debug% check dir "%hist%\%%f"
if not exist "%hist%\%%f" md "%hist%\%%f"
%debug% create file "%%g.%%h`%%c-%%b-%%a`%%d-%%e`%%~zY.RAR"
%rar% a -ep "%hist%\%%f\%%g.%%h`%%c-%%b-%%a`%%d-%%e`%%~zY.RAR" "%%Y"
echo Stop at !time: =0! >>"%log%"

) else (
%check% !time: =0!: ++Checked++ "%%Z\%%g.%%h`%%c-%%b-%%a`%%d-%%e`%%~zY"
echo !time: =0!: ++Checked++ "%%Z\%%g.%%h`%%c-%%b-%%a`%%d-%%e`%%~zY" >>%log%
)
)
)
)
)
:step4
echo.>>%log%
rem echo hist="%hist%", unRegular="%unRegular%"
for /d %%z in ("%hist%\*.*") do (
echo !time: =0!: backward analize "%%~nxz">>%log%
%check% !time: =0!: backward analize "%%~nxz"
%debug% echo time = !time: =0!, = %time: =0%
%debug% echo z="%%z", n="%%~nz"
for %%y in ("%%z\*.rar") do (
%debug% file="%%~ny" size=%%~zy date="%%~ty"
for /f "tokens=1-4 delims=`" %%a in ("%%~ny") do (
for /f "tokens=1-3 delims=-" %%e in ("%%b") do (
for /f "tokens=1-2 delims=-" %%h in ("%%c") do (
%debug% n="%%~nxa" orig:sz=%%d dt="%%g.%%f.%%e %%h:%%i"
for %%x in ("%unRegular%\%%~nxz\%%~nxa") do (
%debug% x=%%x sz=%%~zx dt=%%~tx

if "%%~zx" == "%%d" (
if "%%~tx" == "%%g.%%f.%%e %%h:%%i" (
rem echo x=%%x sz=%%~zx dt=%%~tx
rem %check% +++checked+++ "%%~nxz\%%~ny"
) else (
if "%%~zx" == "" (
echo ---skipped--- "%%~nxz\%%~nxy">>%log%
%check% ---skipped--- "%%~nxz\%%~nxy"
) else (
echo *** wrong *** "%%~nxz\%%~nxy": sz=%%~zx dt="%%~tx">>%log%
%check% *** wrong *** "%%~nxz\%%~nxy": sz=%%~zx dt="%%~tx"
)
)
) else (
if "%%~zx" == "" (
echo ---skipped--- "%%~nxz\%%~nxy">>%log%
%check% ---skipped--- "%%~nxz\%%~nxy"
) else (
echo *** wrong *** "%%~nxz\%%~nxy": sz=%%~zx dt="%%~tx">>%log%
%check% *** wrong *** "%%~nxz\%%~nxy": sz=%%~zx dt="%%~tx"
)
)
)
)
)
)
)
)
:exit0
echo Finish at %date: =0% %time: =0%>>%log%
echo.>>%log%
echo.>>%log%

rem Копия себя в папку архивов
copy %0 "%dirrez%"

rem Копия последнего отчета о последней проделанной работе (с предварительной очисткой)
del *.txt
%debug% copy %log% %rootlog%
copy %log% %rootlog%


В общем, теперь изредка смотрю лог произошедшего... и никакого пара... в смысле - не парюсь...

А, да... примеры с пустыми строками - внутри, и именно - через echo.
29 мар 13, 00:36    [14110503]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
немножко подчистил, где увидел, но в основе ничего не менял)
29 мар 13, 00:37    [14110505]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
invm
Member

Откуда: Москва
Сообщений: 9646
Cygapb-007,

Угу. Как оказалось, фар так гадит...
29 мар 13, 01:24    [14110569]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Не, не так...
Если писать ECHO>>file.txt - дейстительно в файл запишет статус ECHO
Но если написать ECHO.>>file.txt - запишет пустую строку :)
29 мар 13, 08:56    [14110927]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
invm
Member

Откуда: Москва
Сообщений: 9646
Если в фаре выполнить ECHO.>>file.txt, то в файле будет ECHO is on. вместо пустой строки.
Фар 2.0 build 1666.
29 мар 13, 09:07    [14110959]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Ыыыы... 3.0 3000 х64 - то же самое... не знал:)
29 мар 13, 09:31    [14111048]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
tred_tred
Member

Откуда:
Сообщений: 32
помогло echo.
до этого тоже такой способ нашел, но писал echo . через пробел,
не работало
29 мар 13, 09:33    [14111057]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31785
Cygapb-007
echo.
Спасибо! Тоже пробовал через пробел, не помогало.
Теперь можно будет избавиться от кучи мест с вспомогательным файлом с переводом строки...
29 мар 13, 09:51    [14111114]     Ответить | Цитировать Сообщить модератору
 Re: перенос строки через xp_cmdshell  [new]
Гость333
Member

Откуда:
Сообщений: 3683
+ Флуд
Cygapb-007
знаете ли вы cmd? нет, я хочу спросить, знаете ли вы cmd так, как люблю его я?

Гы... вот маньяк :-)

invm
Фар 2.0 build 1666.

Фар — маздай, Тотал Коммандер + cmd.exe — рулез!
29 мар 13, 10:06    [14111161]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить