0

複数の場所からコードの断片を持ち上げて、以下のコードを作成しました。

このコードの基本的な機能は、すべてのソフトウェアを読み取り、さらに使用できるように csv 形式で保存することです。ドメインで共有されている別のコンピューターにあるフォルダーに出力を保存するコードが必要です。以下はコードです:

@ECHO OFF 
SETLOCAL EnableExtensions EnableDelayedExpansion

set OutputFile=C:\Domo\%computername%.csv
echo "Computer","Key","Version","Name","Publisher">"%OutputFile%"

call :getsw "HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall"
call :getsw "HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall"
call :getsw "HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"

ENDLOCAL
exit /b

:getsw
    for /F "delims=" %%g in ('reg query "%~1" 2^>NUL') do (
        set "_swRegKey=%%~g"
        set "_swName="
        set "_swVers="
        set "_swPub="

        for /F "tokens=1,2,*" %%G in ('
          reg query "%%~g" /V DisplayName 2^>NUL ^| findstr /I "DisplayName"
                                      ') do set "_swName=%%~I" 
        for /F "tokens=1,2,*" %%G in ('
          reg query "%%~g" /V DisplayVersion 2^>NUL ^| findstr /I "DisplayVersion"
                                      ') do set "_swVers=%%~I"
        for /F "tokens=1,2,*" %%G in ('
          reg query "%%~g" /V Publisher 2^>NUL ^| findstr /I "Publisher"
                                      ') do set "_swPub=%%~I"

        call :echosw 
        ) 
    exit /b

:echosw
    if "!_swName!!_swVers!"=="" (
        echo "%COMPUTERNAME%","unknown","!_swRegKey!","","">>"%OutputFile%"
    ) else (
        echo "%COMPUTERNAME%","!_swRegKey!","!_swVers!","!_swName!","!

_swPub!">>"%OutputFile%"
    )
    exit /b

問題は、出力ファイル (3 行目) の場所を C:\Domo\%computername%.csv から \Win-p0sck5u2hqd\csv\%computername%.csv のようなネットワーク上の場所に変更したときです。

これにより、バッチ ファイルの実行中にアクセスが拒否されたことを示すエラーが発生します。私が欠けているものはありますか?なぜ機能しないのか、解決策があるのか​​ を理解するのを手伝ってください。

この場所 \Win-p0sck5u2hqd\ は、実行コマンドからアクセスできます。

4

0 に答える 0