Googleアカウントなどでログイン
My Apletts
Create
if then:Amazon Alexa
Choose a trigger:Say a specific phrase
What phrase?:パソコン起動
Create trigger
Then That:Add
Choose a service:OneDrive
Choose an action:Create text file
Connect service:Connect
Microsoftアカウントでサインインする
Create text file
Filename:computerAction
OneDrive folder path:Amazon Alexa/
Contenet:Wakeup
Create action
Finish
Create
if then:Amazon Alexa
Choose a trigger:Say a specific phrase
What phrase?:シャットダウン
Create trigger
Then That:Add
Choose a service:OneDrive
Choose an action:Create text file
Connect service:Connect
Create text file
Filename:computerAction
OneDrive folder path:Amazon Alexa/
Contenet:Shutdown
Create action
Finish
ちなみに、アプレットの削除はHelpから”Can I delete an Applet”を選ぶと行えるらしい。
@echo off
echo %DATE%-%TIME: =0% : Excecuting ... %0 %*
setlocal enabledelayedexpansion
cd /D %~dp0
rem 画面制御のエスケープシーケンスを環境変数に作成する
call SetEscVar.bat
set ALEXA=%OneDrive%\Amazon Alexa
set COMPUTER_ACTION=%ALEXA%\%~n0
echo COMPUTER_ACTION=%COMPUTER_ACTION%
set /a WAIT=10
set WAITING=Waiting...
set /a MSG_CNT=0
:CHAR_COUNT
call set w=%%WAITING:~%MSG_CNT%,1%%
if not "%w%" == "" (
set /a MSG_CNT+=1
goto :CHAR_COUNT
)
@echo|set /p=%ESC_BLINK%
set /a COUNT=0
:LOOP
if exist "%COMPUTER_ACTION%" (
for /f "usebackq delims=" %%f in ("%COMPUTER_ACTION%") do (
echo.
@echo|set /p=%ESC_LINEUP%
if exist "%ALEXA%\%%f.bat" (
@echo|set /p=%DATE%-%TIME: =0% : start %%f.bat
start %%f.bat
)
)
del "%COMPUTER_ACTION%"
set /a COUNT=0
timeout /T %WAIT% > nul
goto :LOOP
)
set /a MSG_POS=%COUNT% %% (%MSG_CNT% + 1) - 1
if %MSG_POS% equ -1 (
echo.
@echo|set /p=%ESC_LINEUP%
@echo|set /p=%DATE%-%TIME: =0% :
) else (
@echo|call set /p=%%WAITING:~%MSG_POS%,1%%
)
set /a COUNT+=1
timeout /T %WAIT% > nul
goto :LOOP
endlocal
exit 0
SetEscVar.bat 画面制御用のエスケープシーケンスを環境変数に作成する
@echo off
:TEMP_NAME
set ESC_FILE=%TEMP%\%~n0_%RANDOM%
set ESC_HEX_FILE=%ESC_FILE%_hex.tmp
set ESC_BIN_FILE=%ESC_FILE%_bin.tmp
if exist %ESC_HEX_FILE% goto :TEMP_NAME
if exist %ESC_BIN_FILE% goto :TEMP_NAME
echo 1B 5B>%ESC_HEX_FILE%
certutil.exe -decodehex %ESC_HEX_FILE% %ESC_BIN_FILE% >NUL 2>&1
set /P ESC=<%ESC_BIN_FILE%
del %ESC_HEX_FILE% >NUL 2>&1
del %ESC_BIN_FILE% >NUL 2>&1
rem The code to go to first column and n lines up is ESC[nF
rem The code to delete to the end of the line is ESC[0J
set ESC_LINEUP=%ESC%1F%ESC%0J
set ESC_LINETOP=%ESC%999D
set ESC_CLRRIGHT=%ESC%0K
set ESC_CLRLEFT=%ESC%1K
set ESC_CLRLINE=%ESC%2L
set ESC_NORMAL=%ESC%39m
set ESC_BLINK=%ESC%5m
exit /b 0
@echo off
echo.
echo %DATE%-%TIME: =0% : Excecuting ... %0 %*
setlocal enabledelayedexpansion
set PC1=192.168.0.11,XX:XX:XX:XX:XX:XX
set PC2=192.168.0.12,XX:XX:XX:XX:XX:YY
set PC3=192.168.0.13,XX:XX:XX:XX:XX:ZZ
set PCs=192.168.0.14,%PC1% %PC2% %PC3%
rem ping.exe で応答しないもののみマジックパケットを送出する
for %%p in (%PCs%) do (
for /f "tokens=1,2 delims=," %%q in ("%%~p") do (
echo ping.exe %%q
set WAKE=
for /f "usebackq skip=2 tokens=1,2" %%i in (`ping -n 1 %%q`) do (
if "%%j" == "からの応答:" if not "%%i" == "%%q" set WAKE=1
if "%%i" == "要求がタイムアウトしました。" set WAKE=1
)
if "!WAKE!" == "1" (
PowerShell.exe "$macAddr=[byte[]]("""%%r""".split(""":""") | ForEach-Object{[Convert]::ToInt32($_, 16)}); $magicPacket=([byte[]](@(0xFF)*6)) + $macAddr * 16; $udpClient=new-object System.Net.Sockets.UdpClient; $WakeUpTarget=[System.Net.IPAddress]::Broadcast; $udpClient.Connect($WakeUpTarget, 9); $udpClient.Send($magicPacket, $magicPacket.Length) | out-null; $udpClient.Close();"
echo %%qを起動しました。
)
)
)
)
@rem for %%p in (%PCs%) do C:\Winapp\WinWol_v303\WinWol.exe /C /H %%p
endlocal
timeout /T 60
exit 0
@echo off
echo %DATE%-%TIME: =0% : Excecuting ... %0 %*
rem MAX_FILES 残す個数
setlocal
for %%i in (wp-01 wp-02) do call :MYSQLDUMP %%i %1
endlocal
EXIT /B
:MYSQLDUMP
setlocal
if not exist %~dp0MySQL mkdir %~dp0MySQL
set SQL_FILE=%~dp0MySQL\%COMPUTERNAME%_%1_%date:~-10,4%-%date:~-5,2%-%date:~-2,2%.sql
if not exist %SQL_FILE% (
echo C:\xampp\mysql\bin\mysqldump -u -p %1
C:\xampp\mysql\bin\mysqldump -u ユーザー名 -pパスワード %1 > %SQL_FILE%
if errorlevel 1 goto :NO_FILE
for %%f in (%SQL_FILE%) do (
if %%~zf == 0 goto :NO_FILE
if "%%~zf" == "" goto :NO_FILE
)
if not "%WORDPRESS_BACKUP%" == "" (
if not exist %WORDPRESS_BACKUP%\xampp\Tools\MySQL mkdir %WORDPRESS_BACKUP%\xampp\Tools\MySQL
echo copy /Y %SQL_FILE% %WORDPRESS_BACKUP%\xampp\Tools\MySQL\
copy /Y %SQL_FILE% %WORDPRESS_BACKUP%\xampp\Tools\MySQL\
)
call DeleteOldFile.bat %~dp0MySQL %COMPUTERNAME%_%1_*.sql %2
)
endlocal
EXIT /B
:NO_FILE
echo SQL output fail.
endlocal
EXIT /B 1
DeleteOldFile.bat
@echo off
@rem echo %0 %1 $2 %3 %4
if not "%4" == "" goto :FORMAT
echo %DATE%-%TIME: =0% : Excecuting ... %0 %*
@rem FOLDER フォルダー
@rem PATERN ファイルパターン
@rem 最後の文字が"\"ならフォルダーパターン
@rem LAST_DAYS 残す日数d or MAX_FILES 残す個数n デフォルトは日数
setlocal enabledelayedexpansion
set FOLDER=%~1
set PATERN=%~2
set PARAM3=%3
set /a MAX_FILES=0
set /a LAST_DAYS=0
set DIRECTORY=
if "%PATERN:~-1%" == "\" set DIRECTORY=/d
if "%PATERN:~-1%" == "\" set PATERN=%PATERN:~0,-1%
echo DIRECTORY="%DIRECTORY%" PATERN="%PATERN%"
@rem forfilesに*.*を指定すると拡張子無しが検索できないので*に変える
if "%PATERN%" == "*.*" set PATERN=*
@rem 日付(d)、個数(n)指定の処理、指定されていないときは日付指定にする
if not "%PARAM3%" == "" (
if /I "%PARAM3:~-1%" == "d" (
set /a LAST_DAYS=%PARAM3:~0,-1%
) else if /I "%PARAM3:~-1%" == "n" (
set /a MAX_FILES=%PARAM3:~0,-1%
) else (
set /a LAST_DAYS=%PARAM3%
)
)
if not exist %FOLDER% (
echo not exist %FOLDER%
endlocal
echo.
EXIT /B 1
)
if %MAX_FILES% LEQ 0 IF %LAST_DAYS% LEQ 0 (
echo bad option
echo usage: [folder] [pattern] [daysD or countN]
endlocal
echo.
EXIT /B 1
)
:TEMP_NAME
set TEMPI_FILE=%TEMP%\%~n0_I%RANDOM%.tmp
set TEMPO_FILE=%TEMP%\%~n0_O%RANDOM%.tmp
if exist %TEMPI_FILE% goto :TEMP_NAME
if exist %TEMPO_FILE% goto :TEMP_NAME
set TARGET_TIME=
@rem 環境によっては「'FileSystem' プロバイダーで InitializeDefaultDrives 操作を実行しようとして失敗しました。」とエラー表示されるので、エラー出力を無視する
if %LAST_DAYS% GTR 0 FOR /F "usebackq delims=" %%a in (`powershell "(get-date).AddDays(-%LAST_DAYS%).ToString(\"yyyy-MM-ddTHH:mm:ss\")"2^>nul`) do Set TARGET_TIME=%%a
@rem if exist *.*は常にTRUEになるので、ファイルの数を数える
@rem if not exist %FOLDER%\%PATERN% goto :DONE
set /a COUNT=0
for %DIRECTORY% %%a in ("%FOLDER%\%PATERN%") do set /a COUNT+=1 > NUL
echo MAX_FILES=%MAX_FILES% LAST_DAYS=%LAST_DAYS% TARGET_TIME=%TARGET_TIME% COUNT=%COUNT%
if %COUNT% equ 0 goto :DONE
@rem ファイルのタイムスタンプを秒まで欲しいため、firfilesで出力させる
@rem firfilesがUNCに対応していないので、一旦カレントディレクトリに変える
@rem %0がパスを含んでいないこともあるので%~f0と記述
pushd "%FOLDER%" && (
forfiles /M "%PATERN%" /C "cmd /c %~f0 \"@fdateT@ftime\" @file @fsize %TEMPI_FILE%"
popd
)
@rem 日数指定の場合は日時だけの行を追加しておく
if not "%TARGET_TIME%" == "" echo "%TARGET_TIME%">> %TEMPI_FILE%
@rem 逆順にソートする
sort.exe /R %TEMPI_FILE% /O %TEMPO_FILE%
if ERRORLEVEL 1 goto :SORT_ERR
for %%f in (%TEMPO_FILE%) do (
if %%~zf == 0 goto :SORT_ERR
if "%%~zf" == "" goto :SORT_ERR
)
echo type %TEMPO_FILE%
type %TEMPO_FILE%
if not "%TARGET_TIME%" == "" goto :DAYS
@rem 個数指定での削除
set /a FILE_COUNT=0
for /F "delims=" %%g in (%TEMPO_FILE%) do (
set /a FILE_COUNT=!FILE_COUNT! + 1
if !FILE_COUNT! GTR %MAX_FILES% (
CALL :SUB_DELETE %%g
)
)
goto :DONE
:DAYS
@rem 日付指定での削除
@rem 日付のみのがあればそれ以降を削除する
set DELETE=
for /F "delims=" %%g in (%TEMPO_FILE%) do (
if not "!DELETE!" == "" (
CALL :SUB_DELETE %%g
) else (
set FILE_TIME=%%g
if "!FILE_TIME!" == ""%TARGET_TIME%"" (
rem echo delete point !FILE_TIME!
set DELETE=1
)
)
)
goto :DONE
:SUB_DELETE
setlocal enabledelayedexpansion
for /F "tokens=2 delims=+" %%b in (%1) do (
set FILE=%%b
set FILE=!FILE:"=!
rem echo dir "%FOLDER%\!FILE!"
rem dir "%FOLDER%\!FILE!"
if "%DIRECTORY%" == "" (
echo del "%FOLDER%\!FILE!"
del "%FOLDER%\!FILE!"
) else (
echo rd /S /Q "%FOLDER%\!FILE!"
rd /S /Q "%FOLDER%\!FILE!"
)
)
endlocal
exit /b
:SORT_ERR
echo sort error
if exist %TEMPI_FILE% del %TEMPI_FILE%
if exist %TEMPO_FILE% del %TEMPO_FILE%
endlocal
echo.
exit /b 1
@rem 日付のフォーマットを/から-に変える。ファイルサイズを3桁区切りにする。
@rem %4は無くてもいいが、同じバッチファイルを再利用するため4番目のパラメーターを使用する。
:FORMAT
setlocal enabledelayedexpansion
@rem echo %0 %1 %2 %3 %4
set fdatetime=%1
set file=%2
set len=%3
set fdatetime=!fdatetime:/=-!
if exist %~dp0PrintNum3.bat (
for /F "usebackq" %%n in (`%~dp0PrintNum3.bat !len!`) do set len=%%n
)
rem echo !fdatetime!+!file!+"!len!"
echo !fdatetime!+!file!+"!len!">> %4
endlocal
exit /b 0
:DONE
if exist %TEMPI_FILE% del %TEMPI_FILE%
if exist %TEMPO_FILE% del %TEMPO_FILE%
endlocal
echo.
EXIT /B 0
:DONE
if exist %TEMPI_FILE% del %TEMPI_FILE%
if exist %TEMPO_FILE% del %TEMPO_FILE%
endlocal
echo.
EXIT /B 0
PrintNum3.bat
@echo off
if "%1" == "" (
echo 0
exit /b
)
setlocal enabledelayedexpansion
set num=%1
set /a len=0
set num_t=%num%
:LEN_LOOP
if not "%num_t%" == "" (
set num_t=%num_t:~1%
set /a len=%len%+1
goto :LEN_LOOP
)
set /a top_len=%len%%%3
set num3=%num:~-3,3%
if %len% gtr 3 (
FOR /L %%i IN (6,3,%len%) DO call set num3=%%num:~-%%i,3%%,!num3!
if %top_len% gtr 0 (
call set num3=%%num:~0,%top_len%%%,!num3!
)
)
echo %num3%
endlocal
exit /b