CMD/バッチ ファイル (Win-7 cmd.exe で実行) を作成していますが、遅延変数展開でハングアップしているようです。
次の形式のテキスト ファイル入力を使用しています。
9 .CN=ISRJX.OU=Linc.OU=thisco.O=UCOM.T=UCOM. 8-20-13
10 .CN=FXXLISHER.OU=Linc.OU=thisco.O=UCOM.T=UCOM. 10-13-13
11 .CN=QXX004F.OU=Linc.OU=thisco.O=UCOM.T=UCOM. 10-14-13
12 *.CN=QXX1001OB.OU=Linc.OU=thisco.O=UCOM.T=UCOM. 10-15-13
「inputfile.txt」の内容として。目的は、プロセスのこの時点で、「.CN=」の後の最初の単語を抽出することです。
文字数が異なるため、「CN =」の前の文字数に基づいて削除できないことに注意してください。
私のスクリプトは次のとおりです。
setlocal enableextensions enableDelayedExpansion
REM @echo off
for /f "tokens=3 delims==." %%a in (inputfile.txt) do (
set "acct =%%a"
echo. %%a,%acct%
)
endlocal
引用符、!、% などのすべての組み合わせと、遅延展開の有効化と無効化の両方を試しましたが、まだ機能しません。ほとんどの場合、私が使用するとき ! 実際の ! をエコーすることになります。つまり"echo !acct!"
、実際のテキスト "!acct!" がエコーされます。
ここや他の場所で、遅延変数展開に関する多くの例と回答を読みました。この例では、「acct」をループ内で展開したいので、それを回避する方法がわかりません。
これは単純な句読点の問題だと思いますが、私にはアイデアがありません。これを実行すると、acct が %%a の値に設定されていることがわかりますが、エコーすると、明らかに新しい値に展開されません。代わりに、以前に設定されていたもの、または空白がエコーされます。
も試しdisabledelayedexpansion
ましたが、結果に違いはありません (!acct!
の代わりに使用した場合も含む%acct%
)。