バッチファイルを書くのが初めてです。文法が私を吐き出させてしまうので、私は離れようとします。簡単に言えば、膨大な量のデータをチェックし、すべてをWindowsの.csvファイルにエクスポートする、すばやく簡単な方法が必要でした。私は仕事をするための簡単なバッチファイルを書きました。バッチファイルの可変スコープ
私は可変スコープにいくつか問題があります。このコードのアイデアは、コンマで区切られた一連のデータを作成し、出力をエコーすることです。別のファイルが出力をキャッチしますが、それは重要ではありません。ここ
は私が午前問題を表示するいくつかの擬似コードで、私はこの問題に数回実行したと[OK]を、ここで私が何を考えている
setlocal EnableDelayedExpansion
::pseudo code for loop
LOOP THROUGH LIST OF FILE PATHS PUTTING THEM INTO %%B do (
set str=, ::reset str
other code
if exist %%B (
other code
::echos the file path and checks if it is a specific file i need to search
echo %%B 2> NUL | find /I /N %%B "%phrase_0_%" > NUL
if %ERRORLEVEL% == 0 (
::HERE IS THE PROBLEM SEE BELOW FOR MORE INFO
type %%B 2> NUL | find /I /N "%phrase_1_%" > temp.txt
set /p var=<temp.txt
set "str=!str!%var%,"
del temp.txt
type %%B 2> NUL | find /I /N "%phrase_2_%" > temp.txt
set /p var=<temp.txt
set "str=!str!%var%,"
del temp.txt
)
) else (::OTHER CODE)
echo !str!
)
endlocal
それを試してみて、避けるために、大幅に私のコードを再構築してきました問題は。私はネストされた変数呼び出しに問題がありました。私はループトリックで便利な方法を使って1つのコマンドの出力を変数に入れていましたが、変数の値を変更することでさらに難しいネストが必要でした。 !のSETLOCAL EnableDelayedExpansionとstrを使用して
if exists %%B(
:あなたが見ることができるように、私は内部%のSTRの%で混乱することができます!ナンセンス。しかし、それは私が
if %ERRORLEVEL% == 0
で別のレベルを下に行くときあなたたちは問題があるかもしれない、または溶液が何であるか何にいくつかの提案を持っていない動作しませんか?
'%var%'が持つと期待しているのは 'type %% B 2> NUL |/I/N "%phrase_2 _%"コマンドを検索します。ファイルを検索して特定のフレーズを探し、行と行番号を出力する必要があります。 あなたは、ソリューションが 'set" str =!str !! var!、 "'になることをお勧めしますか? – Newbie
もちろん。 '%var%'は実際に最も外側のブロックを入力する前に置き換えられます。 – Joey