0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

パソコンやプリンターの情報をバッチファイルでテキスト出力する Windows10や11

Last updated at Posted at 2024-09-22

はじめに

PCのキッティングをしていて「こんなこと必要になるのかぁ?」とふと思いつきました。

「.bat」ファイルを管理者実行して
PCの基本的な情報や設定したプリンター情報を取得します。

そして「.txt」ファイルでデスクトップに出力して完了です。
ただし、新しく「メモ帳」を起動して下記のコードを貼り付けて、
保存する際には「***.bat」で保存します。

作成方法は前記事Windows10・11 一時ファイル(ディスククリーンアップ)の一括設定
の②をご参照ください。

検証を重ねてコード掲載に至っておりますが、ご利用は最新の公式情報を参照の上、自己責任でお願い申し上げます。

また、ある程度コマンドプロンプトや、PowerShellを実行経験済みの方が参考にされる事をお勧めします。

一部手順を省略している場合があり、お使いのOS環境によりましては上手く動作しない場合がございます。

.batファイルのコード
@echo off
rem 管理者実行
if not "%1"=="am_admin" (powershell start -verb runas '%0' am_admin & exit /b)
setlocal enabledelayedexpansion

set /p answer="PC情報はエクスポート済みですか?(y/n):"

if "%answer%" == "y" (
  echo かしこまりました。抽出をスキップします。
goto end 
) else if "%answer%" == "n" (
  echo PC情報抽出を開始します。
) 

rem 現在サインインしているユーザー名を取得
for /f "tokens=2 delims=\\" %%A in ('whoami') do set User_NAME=%%A


rem デバイス名
for /f "usebackq delims=" %%A in (`powershell -Noprofile -ExecutionPolicy Unrestricted -command "(Get-CimInstance -ClassName Win32_ComputerSystem).Name"`) do set PC_NAME=%%A


rem 使用しているOS名
for /f "usebackq delims=" %%A in (`powershell -Noprofile -ExecutionPolicy Unrestricted -command "(Get-CimInstance Win32_OperatingSystem).caption + ' ' + (Get-CimInstance Win32_OperatingSystem).OSArchitecture"`) do set OS_VERSION=%%A


rem メーカー名
for /f "usebackq delims=" %%A in (`powershell -Noprofile -ExecutionPolicy Unrestricted -command "(Get-CimInstance win32_ComputerSystem).Manufacturer"`) do set MANUFACTURER=%%A

rem モデル名
for /f "usebackq delims=" %%A in (`powershell -Noprofile -ExecutionPolicy Unrestricted -command "(Get-CimInstance win32_ComputerSystem).model"`) do set MODEL=%%A


rem CPU名
for /f "usebackq delims=" %%A in (`powershell -Noprofile -ExecutionPolicy Unrestricted -command "(Get-CimInstance Win32_Processor).Name"`) do set CPU=%%A


rem Macアドレス 有線
for /f "usebackq delims=" %%A in (`powershell -Noprofile -ExecutionPolicy Unrestricted -command "(Get-NetAdapter  -physical -includeHidden -Name イーサネット*).MacAddress"`) do set Ethernet_MAC=%%A


rem Macアドレス Wi-Fi
for /f "usebackq delims=" %%A in (`powershell -Noprofile -ExecutionPolicy Unrestricted -command "(Get-NetAdapter  -physical -includeHidden -Name Wi-Fi*).MacAddress"`) do set WiFi_MAC=%%A




REM 情報をテキストファイルに出力
set "OUTPUT_FILE=%USERPROFILE%\Desktop\ExportPC.txt"


echo 【基本情報】 > "%OUTPUT_FILE%"
echo ユーザー名: %User_NAME% >> "%OUTPUT_FILE%"
echo PC名: %PC_NAME% >> "%OUTPUT_FILE%"
echo メーカー: %MANUFACTURER% >> "%OUTPUT_FILE%"
echo CPU: %CPU% >> "%OUTPUT_FILE%"
echo 型番: %MODEL% >> "%OUTPUT_FILE%"
echo OSの種類: %OS_VERSION% >> "%OUTPUT_FILE%"
echo 有線MACアドレス:%Ethernet_MAC% >> "%OUTPUT_FILE%"
echo Wi-FiMACアドレス:%WiFi_MAC% >> "%OUTPUT_FILE%"
echo. >> "%OUTPUT_FILE%"


REM プリンター情報を変数に格納
powershell -NoProfile -ExecutionPolicy unrestricted -Command "Get-Printer | Where-Object { $_.Name -notmatch 'OneNote|Microsoft Print to PDF' }| Select-Object -Property Name,PortName | Format-Table -HideTableHeaders " >> %OUTPUT_FILE%


:end

rem 1~3の番号入力によって実行内容が変わる。
set /p answer="1: 共有設定のエクスポート, 2: 共有設定のインポート, 3: 何もしない (1/2/3): "

if "%answer%" == "1" (
  echo エクスポートを実行します。
  rem 共有設定のエクスポート
  reg export HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Shares %UserProfile%\desktop\reg.reg /y
) else if "%answer%" == "2" (
  echo インポートを実行します。
  rem 共有設定のインポート  
  reg import %UserProfile%\desktop\reg.reg
  rem サービスのServerを再起動
  net stop Server
  net start Server
) else if "%answer%" == "3" (
  echo 何もしません。
)

REM デバイス名を取得
set deviceName=%COMPUTERNAME%

REM ユーザー名を取得
for /f "tokens=*" %%i in ('net user %USERNAME% ^| findstr /c:"フル ネーム"') do (
    set fullName=%%i
)



REM フルネームを整形
rem set fullName=%fullName:Full Name=%
rem set fullName=%fullName: =%

rem 空白を削除
set fullName=%fullName:Full Name=%
set fullName=%fullName:フル ネーム=%

set fullName=%fullName: =%



REM VBSスクリプトを作成
echo Set objExcel = CreateObject("Excel.Application") > update_excel.vbs
echo Set objWorkbook = objExcel.Workbooks.Open("%userprofile%\Desktop\test.xlsx") >> update_excel.vbs
echo Set objSheet = objWorkbook.Sheets(1) >> update_excel.vbs
echo objSheet.Range("C4").Value = "%deviceName%" >> update_excel.vbs
echo objSheet.Range("E4").Value = "%fullName%" >> update_excel.vbs
echo objWorkbook.Save >> update_excel.vbs
echo objExcel.Quit >> update_excel.vbs

REM VBSスクリプトを実行
cscript update_excel.vbs

REM VBSスクリプトを削除
del update_excel.vbs


endlocal
pause


バッチファイルの実行場所のパスを変数に格納

REM バッチファイルのディレクトリパスを取得
set scriptDir=%~dp0

REM バックスラッシュを削除
set scriptDir=%scriptDir:~0,-1%


GUI画面の起動

remコンピューターの管理を開く
start /max mmc compmgmt.msc

REM デバイスとプリンターを最大化して開く
start /max control printers

rem Snipping Toolを開く
start snippingtool



接続履歴のあるWi-Fi一覧を「.txt」で出力する。.batコード
@echo off

netsh wlan show profiles > wifi_profiles.txt
for /F "tokens=*" %%i in ('netsh wlan show profiles ^| findstr /C:"All User Profile"') do netsh wlan show profile name="%%i" key=clear >> wifi_profiles.txt

pause

接続履歴のあるWi-Fi一覧を表示するコマンド
netsh wlan show profiles

接続履歴のあるWi-Fiの***を見るコード
netsh wlan show profiles name=*** key=clear | Select-String -Pattern "主要なコンテンツ"

# 以上です。最後まで閲覧いただきありがとうございました。

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?