web-dev-qa-db-ja.com

ファイルから文字列を検索し、ファイル名に同様の変数を追加するバッチスクリプト

こんにちはみんな私はバッチスクリプトでほとんど助けを必要としない...含むファイルsomething.txtから

data
data
LastLogedUser=John.Doe
data
data

文字列LastLogedUser =を検索し、その後にテキストを追加します(この場合、「John.Doe」は他のファイルのコピー内の変数のようです...このように、しかしコードに問題があります:

for /F "delims=" %%a in ('findstr /I "LastLogedUser=" something.txt') do set "uniuser=%%a"  
echo User is: %uniuser%   
copy fpr_log.txt c:\fpr_log%uniuser%.txt
2

コードに問題があります

findstr /I "LastLogedUser=" something.txtはファイルから行全体を返します:

> findstr /I "LastLogedUser=" something.txt
LastLogedUser=John.Doe

したがって、_forループは=を区切り文字として使用し、John.Doeを抽出するためにsecondトークンを取得する必要があります。

ユーザー名にスペースがある場合に備えて、"sもいくつか追加しました...

修正されたバッチファイル:

@echo off
setlocal
for /F "tokens=2 delims==" %%a in ('findstr /I "LastLogedUser=" something.txt') do set "uniuser=%%a"  
echo User is: %uniuser%   
copy fpr_log.txt "c:\fpr_log%uniuser%.txt"
endlocal

参考文献

2
DavidPostill