でそのファイルパスも欲しかった。
検索したら以下のコマンドでできるとのこと。
dir /s /b [file name]任意のディレクトリに移動しカレントディレクトリ以下のファイルを検索する。
そうすると下記のようなパスで帰ってくる。知らなかった。
C:¥users¥user¥aaa¥bbb¥ccc¥ddd.txt
dir /s /b [file name]任意のディレクトリに移動しカレントディレクトリ以下のファイルを検索する。
C:¥users¥user¥aaa¥bbb¥ccc¥ddd.txt
# bb-process-checker.bat内容は、”応答なし”になっていて、ウィンドウタイトルに”Backburner”うんたらと書いてあるプロセスがあったら、フラグを立ててプロセスを切ってあげて、最後にbackburnerのプロセスを確認して、起動していなかったら起動させる.というもの.
-----
@echo off
set BB_FLAG=0
set BB_PROCESS_CHECK=`tasklist /NH /FI "WINDOWTITLE eq Backburner*" /FI "STATUS eq NOT RESPONDING"`
for /F "skip=1 usebackq tokens=1" %%i in (%BB_PROCESS_CHECK%) do (set BB_FLAG=1)
IF 1==%BB_FLAG% (
taskkill /F /FI "WINDOWTITLE eq Backburner*"
taskkill /F /IM WerFault.exe
)
powershell -Command "&{$p='%ProgramFiles(x86)%\Autodesk\Backburner\server.exe';if(!(ps|?{$_.path -eq $p})){&$p}}"
exit
-----
setx <環境変数名> <値>上記コマンドだとユーザー環境変数に登録される.
setx <環境変数名> <値> -m削除する場合は以下のように、値に空白?Null?を渡してあげると、値を空っぽにしてくれる.
setx <環境変数名> ""しかし、私の意図する動きではない.
powercfg /devicequery all_devices表示された結果内からビデオカードの項目を探すのが面倒なので、findstrに渡して上げる.コマンドプロンプトに表示すると畏まるので、findstrの結果をmsgに渡してあげることで、若干取っ付きやすい表示になると思う.
powercfg /devicequery all_devices | findstr NVIDIA | msg %username%上記コマンドをbatファイルにしておいて、ファイルをダブルクリックすれば、ポップして表示してくれる.
=======とりあえず、今のところは問題なし.
.reg ファイルの場合
----
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer]
"NoSimpleNetIDList"=dword:00000001
=======
ms-dos コマンドの場合
----
reg add HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer /v NoSimpleNetIDList /t REG_DWORD /d 1
----
---------------
test.bat
-----
@echo off
for /L %%v in (1,1,10) do (
set /p x=*< nul
ping 1.0.0.0 -w 1 -n 1 > nul
rem timeout /t 1 > nul
)
echo OK!
-----
output....
>********** OK!
---------------
pingちなみに
ping 1.0.0.0 -w 5000 -n 1 > nultimeout
timeout /t 5 /nobreak > nul
ping 127.0.0.1 -n 5 > nullと、かいている人もいるけど、timestamp取ってみると正確ではないようだ.
---------------まあ、batで処理するようなものなので、おおざっぱな値でもいいか.
test.bat
-----
wmic os get localdatetime
ping 127.0.0.1 -n 5 1>nul
wmic os get localdatetime
-----
out ...
=>LocalDateTime:20121219160952.868000+540
=>LocalDateTime:20121219160956.934000+540
---------------
whoami /user上記コマンドと組み合わせて以下のようにbatファイルを作成し、任意のレジストリを削除することができた.
for /f "usebackq tokens=2" %%i in (` whoami /user /nh `) do (set VALUE=%%i)SIDとは「Security Identifier」 の略らしい.
reg delete "HKEY_USERS\%VALUE%\Software\[任意のキー]"
アカウント作成
net user [account] [password] /fullname:"[full name]" /comment:"[comment]" /passwordchg:no /add
アカウント削除
net user [account] /delete
アカウント停止
net user [account] /active:no
グループに追加
net localgroup "[group name]" [account] /add
グループから削除
net localgroup "[group name]" [account] /delete
パスワードを無期限
wmic useraccount where "Name='[account]'" set PasswordExpires=FALSE
アカウントパスワードの変更
net user [account] [new password]
グループの作成dosとwmicを混合して使用する場合は、wmicを末尾にもってきた方がコマンドの失敗がなくて良い.
net localgroup "[group name]" /add /comment:"[comment]"
SQLの生成(MS-DOS上だったので-rオプション)いつも「-p」オプションの後にパスワードを付けていたけど、セキュリティ上よろしくないという事に気付いた.乗っ取られた時にコマンド履歴観られたらと思ってゾッとした.
mysqldump -u [username] -p -r dump.sql -l db_source複製先のデータベースを作成
mysql -u [username] -p -e "create database db_destination"SQLを複製先へ流し込む
mysql -u [username] -p db_destination < dump.sql
WMIC /NODE:"リモートマシン名" /USER:"アカウント" /PASSWORD:"パスワード" OS WHERE Primary=1 CALL Shutdown ( or Restart )
※()内は再起動の場合
shutdown /s( or /r ) /t 0 /f /m ¥¥リモートマシン名DOSコマンドでの実行する場合は、リモート先に存在するアカウントからでないと正常にコマンドを実行してくれないので、以下の方法でコマンド実行するアカウントを指定.
※()内は再起動の場合
runas /noprofile /user:アカウント名 "実行コマンド"しかし、上記の方法を何行も書いておくと、記述したマシン分だけパスワードを入力しなければならないので面倒.なので以下の方法で対処.
※runasコマンドは実行する度に、指定したアカウントのパスワードを聞いてくる.
runas /noprofile /user:アカウント名 "[絶対パス]\main.bat"
@echo off
shutdown /s /t 0 /f /m ¥¥リモートマシン名01
shutdown /s /t 0 /f /m ¥¥リモートマシン名02
...
C:\Users\user> restart.bat上記方法は一括でシャットダウンだが、ターゲットを選びたい場合は、引数とforを使用してコマンドを書き換える.
runas /noprofile /user:アカウント名 "[絶対パス]\main.bat %*"
@echo off
for %%i in (%*) do ( shutdown /s /t 0 /f /m ¥¥%%i )
C:\Users\user> restart.bat [リモートマシン名01] [リモートマシン名02] ....※ ターゲットがXPの場合、以下のことに注意する
WMIC /NODE:"マシン名" /USER:"アカウント" /PASSWORD:"パスワード" PROCESS WHERE name="target.exe" deletewmiよりもdosの方が確実に落とせる確率が高いように思う(XPはwmiコマンドでしか落とせなかった).
for /f "usebackq tokens=*" %%i in (` dir [folder]¥*.max /b `) do ( set VALUE=%%i )※上記方法は、ファイルが複数ある場合は対応していない.
キー名:.bat ファイルによる指定したキー名と値名の削除
[-HKEY_LOCAL_MACHINE¥SOFTWARE¥FLEXlm License Manager]
値名:
[HKEY_LOCAL_MACHINE¥SOFTWARE¥FLEXlm License Manager]
"FRANTIC_LICENSE_FILE"=-
キー名:dosコマンドの方はヘルプオプションで色々出てきてくれる。
reg delete "HKEY_LOCAL_MACHINE¥SOFTWARE¥FLEXlm License Manager" /f
値名:
reg delete "HKEY_LOCAL_MACHINE¥SOFTWARE¥FLEXlm License Manager" /f /v FRANTIC_LICENSE_FILE
c:¥users¥user > wmic process listプロセスの一覧の”name”列の値だけ表示
c:¥users¥user > wmic process get name指定したプロセス情報のみを表示
c:¥users¥user > wmic process where name='[name列に表示された文字列]'指定したプロセスを終了させる
c:¥users¥user > wmic process where name='[name列に表示された文字列]' deleteリモートマシンのプロセスを終了させる
c:¥users¥user > wmic /node:"リモートマシン名" /user:"アカウント名" /password:"パスワード" process where name="name列に表示された文字列" deleteヘルプ参照(詰まったら/?をつけてみる)
c:¥users¥user > wmic process where name='[name列に表示された文字列]' /?
c:¥users¥user > wmic process /?
c:¥users¥user¥appdata¥local上記を指す環境変数は下記で取得
c:¥users¥user > echo %localappdata%あと個人的に使いそうなのは以下。
%appdata%変数一覧はsetコマンドで確認できるから、必要になったら都度確認すればよい。
%username%
%userprofile%
c:¥users¥user > set
C:\Users\user> tree D:\ /f > c:\Users\User\Desktop\d-drive.txt