0

簡単に解決できるはずの問題があります (私はそう思います)。バッチコマンドの経験がなく、正しく使用していないため、問題が発生しています。

多くのサブフォルダーを持つディレクトリがあります。これらの各サブフォルダーには、実行する必要がある .sql ファイルが含まれています。ただし、サブフォルダーの 1 つは、そのファイルを実行する必要はまったくありませんが、フォルダー内に残す必要があります (つまり、このフォルダーを削除して他のフォルダーを処理する権限がありません)。

現時点で私が持っているものは次のとおりですが、よくわからないのは IF NOT ステートメントです。これはどのように正しく書くべきですか?

for /r %ROOT% %%b in (.) do (
if  NOT ==CertainFolder(
sqlcmd -S %SERVER% -d %DATABASE% -i %%~nb -b 
)

どんな助けでも大歓迎です。私が言ったように、私はこの種のことの初心者であり、すべての検索で役に立たないものが出てきました。for は、それを特定のものにしていると感じています。

ありがとう。

4

3 に答える 3

0
FOR /R %ROOT% %%b IN (.) DO IF /I NOT "%%~nxb" == "CertainFolder" SQLCMD -S %SERVER% -d %DATABASE% -i "%%~nxb" -b

CertainFolderが引用されていることを確認してください。ネスティングを回復することはできますが、ここでは必要ありません。

編集: %ROOT% が引用符で囲まれていることも確認するか、「%ROOT%」を使用してください。

于 2013-07-30T13:53:45.283 に答える
0

これを試して:

for /r "%ROOT%" %%b in (.) do if  NOT "%%~b"=="CertainFolder" sqlcmd -S %SERVER% -d %DATABASE% -i "%%~nb" -b 

またはこれ:

for /r "%ROOT%" %%b in (.) do if  NOT "%%~nb"=="CertainFolder" sqlcmd -S %SERVER% -d %DATABASE% -i "%%~nb" -b 
于 2013-07-30T13:52:25.420 に答える