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

Откуда: Екатеринбург
Сообщений: 302
Добрый день!

Никак не получается написать строку для извлечения файлов из архива, если имя архива с пробелами(((

Помогите , плз, подправить код

DECLARE @path_end nvarchar(300), @kuda_end nvarchar(300), @cmd nvarchar(300)

set @kuda_end = 'U:\USR_input_control\' 

set @path_end = 'U:\USR_input_control\for_arh\1  2015 03 03 15 09 11.zip'

set @cmd = '"C:\Program Files\7-zip\7z.exe" e  ' + @path_end + ' -o' +  + @kuda_end


exec xp_cmdshell   @cmd
4 мар 15, 20:27    [17344007]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37075
Все пути тоже надо взять в кавычки, как путь к 7z же.
4 мар 15, 20:28    [17344010]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 302
я пробовала, что то делаю не так, не получается

очень прошу, поправьте строку
4 мар 15, 20:29    [17344015]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 302
DECLARE @path_end nvarchar(300), @kuda_end nvarchar(300), @cmd nvarchar(300)

set @kuda_end = 'U:\USR_input_control\' 

set @path_end = 'U:\USR_input_control\for_arh\1  2015 03 03 15 09 11.zip'

set @cmd = '"C:\Program Files\7-zip\7z.exe" e " ' + @path_end + '" -o"' +   @kuda_end + '"'


exec xp_cmdshell   @cmd


так тоже ошибка
4 мар 15, 20:31    [17344024]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37075
Откройте cmd.exe и напишите правильную команду сначала там.
4 мар 15, 20:32    [17344032]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37075
ElenaLeont
так тоже ошибка
Ее текст предлагается угадать?

Сообщение было отредактировано: 4 мар 15, 20:33
4 мар 15, 20:33    [17344035]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 302
output
"C:\Program" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
4 мар 15, 20:38    [17344046]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 302
cmd.exe выдаёт cannot find arhiv

"C:\Program Files\7-zip\7z.exe" e "U:\USR_input_control\for_arh\1 2015 03 03 15 09 11.zip" -o"U:\USR_input_control"

не вижу, где ошибаюсь в строке(
4 мар 15, 20:46    [17344060]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37075
ElenaLeont
cmd.exe выдаёт cannot find arhiv

"C:\Program Files\7-zip\7z.exe" e "U:\USR_input_control\for_arh\1 2015 03 03 15 09 11.zip" -o"U:\USR_input_control"

не вижу, где ошибаюсь в строке(
В вольной расстановке пробелов и тире.
4 мар 15, 20:54    [17344076]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 302
Сергей Алексеевич, помогите, плз, поправить строчку
4 мар 15, 20:56    [17344088]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37075
ElenaLeont
Сергей Алексеевич, помогите, плз, поправить строчку
У меня 7zip нет, я не имею понятия, какими ключами там задаются параметры.
4 мар 15, 20:59    [17344101]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 302
(((
4 мар 15, 21:07    [17344134]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31485
ElenaLeont
не вижу, где ошибаюсь в строке(
Всё у вас правильно написано, просто ошиблись с путями (хотя как вариант - прав нет)

Вы пользуетесь каким нибуть FARом, или по памяти набираете пути/имена? Используйте файловый менеджер, не будете ошибаться, жизнь будет проще
5 мар 15, 08:43    [17344989]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31485
alexeyvg
Всё у вас правильно написано, просто ошиблись с путями (хотя как вариант - прав нет)
Попробуйте dir "U:\USR_input_control\for_arh\1 2015 03 03 15 09 11.zip"
5 мар 15, 08:44    [17344991]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 302
exec master.dbo.xp_dirtree файл в директории видит
5 мар 15, 10:21    [17345324]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 302
кто-нибудь, помогите разобраться в проблеме:

есть код:

DECLARE @path_end nvarchar(300), @kuda_end nvarchar(300), @cmd nvarchar(300)

set @kuda_end = 'F:\usr_test' 

set @path_end = 'F:\usr_test\среда  2015 03 04 19 20 29.rar'

set @cmd = '"C:\Program Files\7-zip\7z.exe" e "'  + @path_end +  '" -o"'  + @kuda_end + '"'

print @cmd
exec xp_cmdshell   @cmd



print @cmd выдаёт строку "C:\Program Files\7-zip\7z.exe" e "F:\usr_test\среда 2015 03 04 19 20 29.rar" -o"F:\usr_test", которая распаковывает архив, если её выполнить через cmd.exe

а вот выше приведённый код завершается ошибкой cannot find arhiv(((
5 мар 15, 11:18    [17345615]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
aleks2
Guest
[quot ElenaLeontprint @cmd выдаёт строку "C:\Program Files\7-zip\7z.exe" e "F:\usr_test\среда 2015 03 04 19 20 29.rar" -o"F:\usr_test", которая распаковывает архив, если её выполнить через cmd.exe

а вот выше приведённый код завершается ошибкой cannot find arhiv((([/quot]

cmd.exe /C "C:\Program Files\7-zip\7z.exe" e "F:\usr_test\среда 2015 03 04 19 20 29.rar"
5 мар 15, 11:24    [17345653]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
aleks2
Guest
А еще лучше:
DECLARE @path_end nvarchar(300), @kuda_end nvarchar(300), @cmd nvarchar(300)

set @kuda_end = 'F:\usr_test' 

set @path_end = 'F:\usr_test\среда  2015 03 04 19 20 29.rar'

set @cmd = 'echo "C:\Program Files\7-zip\7z.exe" e "'  + @path_end +  '" -o"'  + @kuda_end + '"'

exec xp_cmdshell   @cmd
5 мар 15, 11:27    [17345666]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2421
ElenaLeont
кто-нибудь, помогите разобраться в проблеме:

есть код:

DECLARE @path_end nvarchar(300), @kuda_end nvarchar(300), @cmd nvarchar(300)

set @kuda_end = 'F:\usr_test' 

set @path_end = 'F:\usr_test\среда  2015 03 04 19 20 29.rar'

set @cmd = '"C:\Program Files\7-zip\7z.exe" e "'  + @path_end +  '" -o"'  + @kuda_end + '"'

print @cmd
exec xp_cmdshell   @cmd



print @cmd выдаёт строку "C:\Program Files\7-zip\7z.exe" e "F:\usr_test\среда 2015 03 04 19 20 29.rar" -o"F:\usr_test", которая распаковывает архив, если её выполнить через cmd.exe

а вот выше приведённый код завершается ошибкой cannot find arhiv(((


Вы случаем не попутали ваш локальный компьютер с сервером?
Если нет то сравнивайте ваши права на файл с правами учетки сервера. (об этом уже alexeyvg вам написал)
5 мар 15, 11:30    [17345687]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
Glory
Member

Откуда:
Сообщений: 104760
ElenaLeont
print @cmd выдаёт строку "C:\Program Files\7-zip\7z.exe" e "F:\usr_test\среда 2015 03 04 19 20 29.rar" -o"F:\usr_test", которая распаковывает архив, если её выполнить через cmd.exe

а вот выше приведённый код завершается ошибкой cannot find arhiv(((

F диск наверное маппинг на сетевой ресурс для вашего локальной сессии на вашем рабочей станции ?
5 мар 15, 11:57    [17345899]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 302
код выполняю прямо на SQL сервере, F - его диск
5 мар 15, 12:12    [17345985]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
Glory
Member

Откуда:
Сообщений: 104760
ElenaLeont
код выполняю прямо на SQL сервере, F - его диск

Кого "его" ?
exec xp_cmdshell 'dir F:\usr_test\*' что показывает ?
5 мар 15, 12:13    [17345993]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 302
если переименовать файл без пробелов и вернуть сроку без двойных кавычек:

DECLARE @path_end nvarchar(300), @kuda_end nvarchar(300), @cmd nvarchar(300)

set @kuda_end = 'F:\usr_test' 

set @path_end = 'F:\usr_test\111.rar'

--set @cmd = '"C:\Program Files\7-zip\7z.exe" e "'  + @path_end +  '" -o"'  + @kuda_end + '"'

set @cmd = '"C:\Program Files\7-zip\7z.exe" e '  + @path_end +  ' -o'  + @kuda_end

print @cmd
exec xp_cmdshell   @cmd


print @cmd - "C:\Program Files\7-zip\7z.exe" e F:\usr_test\111.rar -oF:\usr_test

ВСЁ РАБОТАЕТ, АРХИВ РАСПАКОВЫВАЕТСЯ

Если же оставить прежнюю строку с кавычками, но файл переименован

DECLARE @path_end nvarchar(300), @kuda_end nvarchar(300), @cmd nvarchar(300)

set @kuda_end = 'F:\usr_test' 

set @path_end = 'F:\usr_test\111.rar'

set @cmd = '"C:\Program Files\7-zip\7z.exe" e "'  + @path_end +  '" -o"'  + @kuda_end + '"'

--set @cmd = '"C:\Program Files\7-zip\7z.exe" e '  + @path_end +  ' -o'  + @kuda_end

print @cmd
exec xp_cmdshell   @cmd


print @cmd - "C:\Program Files\7-zip\7z.exe" e "F:\usr_test\111.rar" -o"F:\usr_test", то ошибка

output
"C:\Program" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
NULL


что не так в cтроке?
5 мар 15, 12:18    [17346023]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 302
output
Том в устройстве F имеет метку Swap
Серийный номер тома: DE59-4D35
NULL
Содержимое папки F:\usr_test
NULL
05.03.2015 14:19 <DIR> .
05.03.2015 14:19 <DIR> ..
04.03.2015 19:20 1 818 199 111 1.rar
1 файлов 1 818 199 байт
2 папок 110 540 099 584 байт свободно
NULL
5 мар 15, 12:20    [17346029]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 302
F - его диск --- это диск SQL сервера, на котором выполняется код
5 мар 15, 12:20    [17346033]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31485
ElenaLeont
print @cmd выдаёт строку "C:\Program Files\7-zip\7z.exe" e "F:\usr_test\среда 2015 03 04 19 20 29.rar" -o"F:\usr_test", которая распаковывает архив, если её выполнить через cmd.exe

ElenaLeont
print @cmd - "C:\Program Files\7-zip\7z.exe" e "F:\usr_test\111.rar" -o"F:\usr_test", то ошибка

Мне кажется, эти 2 высказывания противоречивы.

Первая строка выполняется в Windows без ошибок, а вторая с ошибкой?

Мне кажется, вы быстро пытаетесь выполнить задачу, и из за этого уже так долго возитесь с ерундой :-)

Аккуратно действуйте, не спеша, начинайте в ОС, а потом уже переходите к MSSQL
Добейтесь, что бы строка команды в ОС выполнялась и делала желаемые действия, потом можно начать разбираться, как это будет работать в MSSQL
5 мар 15, 12:30    [17346091]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 302
речь об ошибке касается выполнения в среде MS SQL
5 мар 15, 13:27    [17346544]     Ответить | Цитировать Сообщить модератору
 Re: помогите, плз, сцепить строку  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31485
ElenaLeont
речь об ошибке касается выполнения в среде MS SQL
А, понятно, теперь :-)

тогда напишите
set @cmd = '" ' + @cmd + ' "'
Это такая особенность работы xp_cmdshell.
5 мар 15, 16:05    [17347900]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Microsoft SQL Server Ответить