我有一个powershell脚本,它将运行查询并将结果导出到Excel。我想把它挂接到SQL Studio Management Studio (2008)的外部工具中,SSMS不允许使用powershell脚本,所以我使用一个批处理文件来启动它。
在外部工具部分,您可以指定一些预定义的参数。我想要的参数叫做“当前文本”。此参数将高亮显示的所有内容传递给工具(批处理文件)。然后,我的批处理文件将该参数传递给powershell脚本。
问题是,如果用户有一个跨越多行的查询被突出显示,那么powershell脚本就会因为换行符而失败。似乎将它们剥离出来相对容易,或者更好的是,用一个空间来代替它们?
下面是我的批处理文件:
echo %~1
call powershell ^& 'c:\temp\ExportSQL.ps1' -query "%~1"
我的问题是,在将%1传递给powershell脚本之前,如何将%1中的换行符和回车符替换为空格?蒂娅。
发布于 2011-04-06 15:02:40
首先,我不敢相信您的参数%1
中真的有换行符,因为这是可能的,但实现这一点有点复杂。
要控制这一点,您可以使用
echo on
rem # %1 #
要处理CR和换行字符,您必须使用延迟扩展,因为此类内容的百分比扩展是不可能的。
使用百分比扩展CR总是被删除,换行符删除行的其余部分,或者在块上下文中添加新的命令行。
所以不可能在像%1
..%9
这样的参数中处理换行符的内容。
您需要将其存储在一个变量中。
假设你在变量中有换行符的内容,你可以用空格替换它。
本例中的空行对于结果很重要。
@echo off
set text=This contains a ^
newline
setlocal EnableDelayedExpansion
set ^"result=!text:^
= !"
echo Content of text is "!text!"
echo ----
echo Content of result is "!result!"
-输出
Content of text is "This contains a
newline"
----
Content of result is "This contains a newline"
https://stackoverflow.com/questions/5559673
复制相似问题