2017-08-25 6 views
0

これは、バッチスクリプトと疑問に全く新しいものです。findstrの出力をどのように変数に入れることができますか?変数findstrの出力を取得

@echo off 
set /p assetPath="Set asset path: " 
setlocal enableDelayedExpansion 
for /r %assetPath% %%p in (*.png) do (
    findstr "guid" "%%p".meta 
    if not !errorlevel!==0 (
     echo Could not find guid of file: %%p! 
    ) 
) 
pause 

findstrの出力 ます:GUIDが含まれている各ファイルの「GUID d46decd9d3bbf0d46b31a3d4ae0f18ff」 、どのように私はこの上で操作を行うことができますし、変数にGUIDを保存しますか?

+0

ヒント:もしそうでなければ!errorlevel!== 0'は 'errorlevel 1'と書かれ、あなたのコードは遅延拡張を全く必要としませんでした。Microsoftのサポート記事[バッチファイルの特定のエラーレベルのテスト](https://support.microsoft.com/en-us/kb/69576)。 Magooによって投稿されたデモコードは、拡張が遅れている必要があります。 'errorlevel 1'でもMagooのコードでは少し速く、目に見えないほど速いですが、速くなるでしょう。 – Mofi

答えて

1
@echo off 
set /p assetPath="Set asset path: " 
setlocal enableDelayedExpansion 
SET /A COUNT=0 
for /r %assetPath% %%p in (*.png) do (
    FOR /F "TOKENS=1*" %%f in (' findstr "guid" "%%p".meta ') DO (
    if not !errorlevel!==0 (
     echo Could not find guid of file: %%p! 
    ) ELSE (
     SET /A COUNT+=1 
     SET "FILE[!COUNT!]=%%p" 
     SET "GUID[!COUNT!]=%%g" 
    )) 
) 
FOR /L %%x in (1,1,%COUNT%) DO echo !GUID[%%x]! is guid for !FILE[%%x]! 
pause 

これは、[*] FILEを設定し、GUID [*]見つかったファイルのために、結果を報告しなければなりません。

+0

それはすべてのファイルに対して "is guid for"を出力します。また、 "行末に" SET "GUID ..."がありません。 – Reeley

+0

はい - かなり正確で修正済みです。報告行には '%% x'と' %% a'が混在していました。これらは一貫していなければなりません。 – Magoo

+0

は今、魅力のように機能しています。 – Reeley

関連する問題