0

我有一个运行 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"
4

2 回答 2

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 的使用方式有许多细微的差别。

您还可以查看这个出色的 FOR 循环教程

于 2012-07-31T16:19:54.460 回答
0

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

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

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

更多信息在这里

于 2012-07-31T14:01:29.287 回答