【问题标题】:Getting oracle sqlplus select count value into dos batch file将oracle sqlplus选择计数值放入dos批处理文件
【发布时间】:2012-07-31 13:48:53
【问题描述】:

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

所以如果我的值为 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"

【问题讨论】:

    标签: batch-file sqlplus dos


    【解决方案1】:

    galuano1 答案肯定会从值中去除空格,在您的情况下不应该是必需的。

    FOR /F 的默认标记分隔符是空格和制表符。因此,将为您修剪前导空格。该值不必左对齐:-)

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

    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

    【讨论】:

      【解决方案2】:

      您可以通过执行以下操作删除空格

      set str=%str: =%
      echo."%str%"
      

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

      更多信息here

      【讨论】:

      • 完美。正是我需要的,我的脚本现在运行良好。非常感谢。
      猜你喜欢
      • 1970-01-01
      • 2011-06-23
      • 2012-01-27
      • 2012-01-10
      • 1970-01-01
      • 2018-09-12
      • 2014-01-22
      • 2017-02-11
      • 1970-01-01
      相关资源
      最近更新 更多