質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

12021閲覧

batファイルによるWindows資格情報の削除

smiley-_-smiley

総合スコア26

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Windows 7

Microsoft Windows 7は過去にリリースされたMicrosoft WindowsのOSであり、Windows8の1代前です。2009年の7月にリリースされ販売されました。Windows7の前はWindowsVistaで、その更に3年前にリリースされました。

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2017/06/21 05:23

batファイルを使用して、任意のタイミングでWindows資格情報を削除したいと考えていますが、バッチファイルの書き方がわからないため、お助けいただけないでしょうか。

Windows資格情報の名前は『 ターゲット: LegacyGeneric:MicrosoftOffice16_Data:』から始まるものが複数存在します。
検索した資格情報の名前をファイルに書き出した後、順に削除をしようと考えました。

いったん必要な情報だけの切り出しをしようとしましたが、文字の切り出しがどうしても動作しません。
何が問題なのでしょうか。

●バッチファイル

@echo off setlocal REM 一時ファイルのパス作成 set EXEC_DATE=%date:~-10,4%%date:~-5,2%%date:~-2,2% set EXEC_TIME=%time: =0% set EXEC_TIME=%EXEC_TIME:~0,2%%EXEC_TIME:~3,2%%EXEC_TIME:~6,2% set TMP_FILE=%~dp0tmp_%EXEC_DATE%%EXEC_TIME%.log set LICENSE_FILE=license.txt REM 資格情報の一覧を取得する cmdkey /list > %TMP_FILE% REM Office関連の資格情報の一覧を出力する findstr /i "MicrosoftOffice16_Data" %TMP_FILE% > nul if not %ERRORLEVEL% equ 0 ( echo ERROR: No License if exist %TMP_FILE% ( del %TMP_FILE% ) exit /b 1 ) rem 資格情報の名前のみを出力 findstr /i "ターゲット" %TMP_FILE% > %LICENSE_FILE% if exist %TMP_FILE% ( del %TMP_FILE% ) rem 一行ずつ文字列の切り出し for /f "delims=" %%a in (%LICENSE_FILE%) do ( set STR=%%a echo %STR:~16% ) endlocal exit /b 0

●出力結果

~16 ~16 ~16 ~16

●bat作成の意図
Office365を使用しているのですが、頻繁に資格情報が破損してしまい、サインインを求められてしまう状態が続いています。
Officeのサポートに相談したところ、Windowsの資格情報とレジストリを削除しろという回答でした。
都度手動で作業するのが手間なので、自動化できないかと考えたためです。

根本的に発生しないようにする解決方法は調査中ですが、MSのサポート曰く原因不明なので都度対処しか方法がなさそうです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

FOR 内で変数を使う場合はFOR文開始前に値が展開されます。
enabledelayedexpansion を設定して遅延環境変数の展開を行って下さい。

dosbatch

1@echo off 2setlocal enabledelayedexpansion 3 4for /f "delims=" %%a in (%LICENSE_FILE%) do ( 5 set STR=%%a 6 echo !STR:~16! 7)

enabledelayedexpansion は上の方で設定して下さい。ループ内で環境変数を参照する場合は % でなく ! を使って下さい。

投稿2017/06/21 06:34

編集2017/06/21 15:29
mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2017/06/21 14:40

> 終了後に値が反映されます。 「for文開始前に値が展開されます」ですね。
mattn

2017/06/21 15:28

おっとそうですね。失礼しました。teratail って ~~ で打消しできないのつらい。
smiley-_-smiley

2017/06/27 03:23

返信が遅くなりまして申し訳ありません。 無事に動作しました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問