xp_cmdshell запускает 7z автономно, но не может найти EXE с пармами - PullRequest
0 голосов
/ 21 мая 2018

Когда я вызываю xp_cmdshell, как показано ниже, 7z.exe фактически выполняется, и его вывод верен, потому что параметры не включены:

declare @Command VARCHAR(1000)
set @Command = '"C:\Program Files\7-Zip\7z.exe" a '
exec master..xp_cmdshell @command
select @Command

Вывод:

output
NULL
7-Zip 18.05 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-04-30
NULL
NULL
NULL
Command Line Error:
Cannot find archive name
NULL

Как только я добавлюфайл, я получаю совершенно другую ошибку: 7z.exe не найден:

declare @Command VARCHAR(1000)
set @Command = '"C:\Program Files\7-Zip\7z.exe" a ' + '"' + 'C:\TO_ERASE\ToZip.txt' + '"'
exec master..xp_cmdshell @command
select @Command

Вывод:

output
'C:\Program' is not recognized as an internal or external command,
operable program or batch file.
NULL

В чем может быть проблема?

Разница лишь в том, что я добавил имя файла в качестве параметра.Я бы понял, если 7z.exe генерирует ошибки, но Windows не находит файл exe.

1 Ответ

0 голосов
/ 21 мая 2018

Интересный вопрос.Я обошел поиски различных решений относительно пробела в имени файла и наткнулся на THIS .Я не уверен, почему ваш первый пример работает, но их решение состояло в том, чтобы добавить что-то до пути, чтобы путь не был первым в команде.

declare @Command VARCHAR(1000)
set @Command = 'cd.. && "C:\Program Files\7-Zip\7z.exe" a ' + '"' + 'C:\TO_ERASE\ToZip.txt' + '"'
exec master..xp_cmdshell @command
select @Command
...