はじめに
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 "主要なコンテンツ"
# 以上です。最後まで閲覧いただきありがとうございました。