sql-server-2008 - xp_cmdshell 独立运行 7z,但找不到带参数的 EXE
问题描述
当我如下调用 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
文件。
解决方案
有趣的问题。我四处寻找有关文件名中空格的各种解决方案并遇到了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
推荐阅读
- android - Android多个共享元素不适用于片段
- python - 仅使用布尔和逻辑比较将二进制转换为十进制
- javascript - 当可拖放对象被拖放和/或通过可拖放区域时,默认浏览器操作是什么?
- ios - iOS电子表格视图无法在单元格中显示多个块
- c# - 使用 servermanager Web 设置项目将应用程序池设置为特定的 iis 应用程序
- json - 如何将键值对更改为 json 中的条目
- java - Spring boot + Spring security logout 被重定向到登录
- python-3.x - 获取熊猫的小时数
- python - 如何使用 Python 将双模网络(二分)投影到单模网络
- firebase - 通过 Firebase 集合进行查询并使用 GeoFlutterFire Flutter 显示附近的用户