2012-07-31 87 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