我有一个运行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"
答案 0 :(得分: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 FOR
或FOR /?
。如何使用FOR有许多细微差别。
您也可以查看此excellent FOR loop tutorial
答案 1 :(得分:0)