■実現させたい見本
#!/bin/sh
(
echo 'conn system/<password>'

for file in `ls | grep sql`
do
echo "@$file > dev/null"
sleep 1
done
) | sqlplus /nolog

■「| の使い方が誤っています。」とエラーになるbatファイル
@echo off
set ID=SH
set PW=SH
set NETSERVICENAME=orcl
(
echo conn %ID%/%PW%@%NETSERVICENAME%
echo set trims on echo off termout off

FOR /F %%f in ( 'dir /B /a-d ^| find "sql" ^| find /V "bat"' ) do (
echo spool .\temp\result-%%f
echo @%%f ^> nul
echo spool off
ping -n 1 localhost > nul
)
) | sqlplus -S /nolog

exit /B 0

★実行方法と結果
コマンドプロンプト起動
batファイルのある場所に移動
当該ファイル名をキック

★補足
自身のデバッグにより、FOR文の中の「|」起因でなく、
「 | sqlplus -S /nolog 」の「|」起因であることは確認出来ています。

何卒よろしくお願い致します。

質問者からの補足コメント

  • うれしい

    自己解決し、下記で動作しました。

    @echo off
    set ID=SH
    set PW=SH
    set NETSERVICENAME=orcl

    (
    echo conn %ID%/%PW%@%NETSERVICENAME%
    echo set trims on termout off

    FOR %%f in (*%ID%.sql) do ( ←このように()内を簡素化しました
    echo spool ddl\ddl-%%f
    echo @%%f
    echo spool off
    ping -n 1 localhost > nul
    )
    ) | sqlplus -s /nolog

    exit /B 0

      補足日時:2017/12/05 17:01
  • うれしい

    ろどさん
    ヒントをどうもありがとうございました。

      補足日時:2017/12/05 17:02

A 回答 (1件)

findstrとかどう? その前にshリダイレクト中でしたら動かん

    • good
    • 0
この回答へのお礼

ろど様
ご回答誠にありがとうございます。
findstrで試してみます!
(結果はご報告するようにします。Windowsは不得意なので試行錯誤することになると思いますが、、)

お礼日時:2017/12/05 09:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報