2012-07-31 82 views
0

我有一个DOS批处理文件运行一个SQLplus选择获取特定列值为10的行数。这工作正常,我已经成功输出值的文件,但我现在有真正的问题在批处理文件中使用该值。这个问题似乎是由于它是一个右对齐的10个字符的字符串。获取oracle sqlplus选择计数值到dos批处理文件

所以如果我的值是0我得到这个,

  0 

,或者如果我的价值是7000,我会得到这个,

 7000 

我真正想要的就是这个,

0 

或此

7000 

林有理由相信,如果我有数据在列1开始,然后我可以使用以下方法来读取数据,

for %%a in ("C:\Program Files (x86)\BBWin\ext\status10.LST") do if /I %%a GTR 300 echo %%a >> "C:\Program Files (x86)\BBWin\ext\status10.txt" 

回答

0

您可以通过以下操作

set str=%str: =% 
echo."%str%" 
删除空格

其中str是包含空格值的变量。

更多信息here

+0

完美。正是我所需要的,我的脚本现在完美运行。非常感谢。 – dazedandconfused 2012-07-31 14:15:26

+0

不妨认为接受这个答案:) – 2012-07-31 14:25:38

1

的galuano1答案肯定是条从价值的空间,它不应该在你的情况需要。

FOR/F的默认令牌分隔符是空格和制表符。所以领先的空间将被剪裁。该值不必是左对齐的:-)

您需要使用带有USEBACKQ选项的FOR/F来读取名称中包含空格的文件。

for /f "usebackq" %%a in ("C:\Program Files (x86)\BBWin\ext\status10.LST") do ... 

但是你甚至不需要一个文件!通过将命令放在单引号中,可以使用FOR/F直接处理sqlplus的结果。

for /f %%a in ('sqlplus ...') do ... 

您应仔细阅读FOR命令的帮助文档:在命令行中键入HELP FORFOR /?。 FOR可以如何使用有很多细微的差别。

您可能也会看看这个excellent FOR loop tutorial