コマンドプロンプトを管理者権限で起動して以下のコマンドを実行する。
netstat -bn -p TCP
コマンドプロンプトを管理者権限で起動して以下のコマンドを実行する。
netstat -bn -p TCP
バッチファイルでUTF-8のDBデータを取得します。
DBデータ取得部分はDBに併せて変更する。
@echo off REM バッチ実行ファイルと同階層に実行したいSQLファイルを配置する。 REM SQLファイルは1文を1行で記載する。 REM SQLファイルは「PARAM1」と「PARAM2」を置換文字列としておく。 setlocal ENABLEDELAYEDEXPANSION REM SQLファイルの置換内容の入力 set /P START_DAY="開始日(YYYYMMDD)を入力してください。:" set /P END_DAY="終了日(YYYYMMDD)を入力してください。:" REM バッチ実行ディレクトリの設定 set CURRENT_DIR=%~dp0 REM 日付時刻の設定 set CURRENT_DATE_TIME_HOUR=%time:~0,2% set CURRENT_DATE_TIME_MINUTE=%time:~3,2% set CURRENT_DATE_TIME_SECOND=%time:~6,2% set CURRENT_DATE_TIME=%date:~0,4%%date:~5,2%%date:~8,2%%CURRENT_DATE_TIME_HOUR: =0%%CURRENT_DATE_TIME_MINUTE: =0%%CURRENT_DATE_TIME_SECOND: =0% REM DB接続ファイルのディレクトリに移動 REM 今回の例ではMySQLとする set MYSQL_DIR="C:\Program Files\MySQL\MySQL Server 5.7\bin" cd /d %MYSQL_DIR% set SQL_FILE=%CURRENT_DIR%%~n0.sql set SQL_FILE_TMP=%CURRENT_DIR%%~n0_tmp.sql set WORK_DIR="D:\work" set OUT_DIR=%CURRENT_DIR%output\%CURRENT_DATE_TIME% mkdir %OUT_DIR% set ROWNUM=1 REM コンソールの文字コードをUTF-8に変更 chcp 65001 for /f "tokens=*" %%i in (%SQL_FILE%) do ( set SQL_LINE1=%%i set SQL_LINE2=!SQL_LINE1:PARAM1=%START_DAY%! set SQL_LINE3=!SQL_LINE2:PARAM2=%END_DAY%! echo !SQL_LINE3! > %SQL_FILE_TMP% REM DB接続と実行 REM 今回の例ではMySQLとする mysql -h localhost -u ユーザID -pパスワード -P ポート番号 docrdb < "%SQL_FILE_TMP%" >> %WORK_DIR%\!ROWNUM!.txt set /A ROWNUM=!ROWNUM!+1 ) del %SQL_FILE_TMP% REM コンソールの文字コードをShift-JISに変更 chcp 932 REM DBデータ出力結果のファイル名を変更 move %WORK_DIR%\1.txt %OUT_DIR%\01_案件数.txt move %WORK_DIR%\2.txt %OUT_DIR%\02_案件数不備あり.txt move %WORK_DIR%\3.txt %OUT_DIR%\03_案件数不備なし.txt
バッチファイルのテンプレートとして、以下を設定する。
日付時刻の設定
バッチファイル実行場所の利用
バッチファイルと同名ファイルの利用
@echo off REM 日付時刻の設定 set CURRENT_DATE_TIME_HOUR=%time:~0,2% set CURRENT_DATE_TIME_MINUTE=%time:~3,2% set CURRENT_DATE_TIME_SECOND=%time:~6,2% set CURRENT_DATE_TIME=%date:~0,4%%date:~5,2%%date:~8,2%%CURRENT_DATE_TIME_HOUR: =0%%CURRENT_DATE_TIME_MINUTE: =0%%CURRENT_DATE_TIME_SECOND: =0% REM バッチファイル実行場所の利用 REM バッチファイルと同名ファイルの利用 set LOG_FILE=%dp0/%n0_%CURRENT_DATE_TIME%.log
BATファイルからJava処理を呼び出します。
@echo off REM 空欄を指定した場合、後続処理でバッチ実行ディレクトリになる set USR_EXEDIR=C:\work\bin echo START Java呼び出し if "%USR_EXEDIR%" EQU "" (set USR_EXEDIR=%~dp0) cd /d %USR_EXEDIR% if %errorlevel% == 1 goto label_cderror set LIB_DIR=C:\work\lib set EXE_PATH=.\sub.jar;..\db\ojdbc7.jar;%LIB_DIR%test.jar set CONF_DIR=..\conf set CLASS_PATH=. set JAVA_OPTION=-Xms128M -Xmx128M -XX:MetaspaceSize=64M -XX:MaxMetaspaceSize=64M java %JAVA_OPTION% -classpath %EXE_PATH%;%CONF_DIR%;%CLASS_PATH%;jp.co.test.TestMain > nul echo END Java呼び出し(0) exit %errorlevel% :label_cderror echo END Java呼び出し(9) exit(9)
選択範囲の取消線を削除します。
納品時の作業で利用することあり。
Sub StrikethroughDel() For Each myCell In Selection textBefore = myCell.Value textAfter = "" For i = 1 To Len(textBefore) If myCell.Characters(Start:=i, Length:=1).Font.Strikethrough = False Then textAfter = textAfter & Mid(textBefore, i, 1) End If Next i Next myCell End Sub
フォルダ内のJPGファイルをフォルダごとのシートを作成し、
そのシート内に自動で貼り付けします。
Sub JpgPut() ' JpgPut ' JPGファイルを貼り付ける。 ' エビデンスが存在する1階層上のフォルダを指定する。(末尾\) ' フォルダ内のJPGファイルは100枚まで。 ' 例) ' C:\work\ebi\を指定した場合、 ' C:\work\ebi\imgフォルダ内のJPGファイルを貼り付ける。 Application.Calculation = xlCalculationManual Application.EnableEvents = False Application.ScreenUpdating = False Application.DisplayStatusBar = True Application.StatusBar = "処理中・・・" Dim count As Integer count = 0 Dim folderPath As String ' 環境によって変更すること。 folderPath = Worksheets(1).Cells(2, 1).Value Dim fileName As String fileName = Dir(folderPath & "\", vbDirectory) Dim n As Integer n = 0 Dim fileNames(100) As String Do While fileName <> "" fileNames(n) = fileName n = n + 1 fileName = Dir() Loop Dim i As Integer Dim j As Integer For j = 0 To n fileName = fileNames(j) If GetAttr(folderPath & "\" & fileName) And vbDirectory Then If fileName <> "." And fileName <> ".." And fileName <> "" Then i = 0 Dim newSheet As Worksheet Set newSheet = Worksheets.Add() newSheet.Move after:=Worksheets(Worksheets.count) newSheet.Name = fileName Dim jpgPath As String jpgPath = Dir(folderPath & "\" & fileName & "\" & "*.JPG", vbNormal) Do While jpgPath <> "" ' 画像の高さに合わせて「45」の数値を変更すること。 newSheet.Cells(i * 45 + 1, 1).Value = jpgPath newSheet.Cells(i * 45 + 2, 2).Select ' Excel2010の場合はここから ' 画像を1*1ポイントで貼り付け Set myShape = Worksheets(fileName).Shapes.AddPicture( _ fileName:=folderPath & "\" & fileName & "\" & jpgPath, _ linkToFile:=False, _ saveWithdocument:=True, _ Left:=Selection.Left, _ Top:=Selection.Top, _ Width:=msoTrue, _ Height:=msoTrue) ' 画像を元のサイズに変換(Heightの設定は不要かも) ' Withを利用しないとオブジェクトエラーになる。 With myShape LockAspecRatio = msoTrue Hieght = 560 End With 'myShape.LockAspecRatio = msoTrue 'myShape.Hieght = 560 ' Excel2010の場合はここまで ' Excel2013の場合はここから 'Worksheets(fileName).Picutures.Insert fileName:=folderPath & "\" & fileName & "\" & jpgPath ' Excel2013の場合はここまで i = i + 1 count = count + 1 jpgPath = Dir() Loop End If End If Next j Application.StatusBar = count & "個貼り付け完了" Application.ScreenUpdating = True Application.EnableEvents = True End Sub
フォルダ内のファイルを解凍します。
/** * ファイル解凍処理 */ private void deCompressFile() throws Exception { // 圧縮ストリームを宣言する。 ZipInputStream zis = null; try { // 作業フォルダのファイルを解凍する。 zis = ZipInputStream( new BufferedInputStream( new FileInputStream(this.currentZipFileName))); // ファイルのエントリを宣言する。 ZipEntry entry; // ファイルに含まれるエントリ分繰り返す。 while ((entry = zis.getNextEntry()) != null) { // 解凍対象ファイル名を取得する。 String fileName = entry.getName(); // ディレクトリの場合 if (entry.isDirectory()) { // ディレクトリを作成する。 Path filePath = Paths.get(this.currentTmpDir + Const.FILE_PATH_SEPARATOR + fileName); Files.createDirectories(filePath); // ファイルの場合 } else { // 解凍処理を行う。 extract(zis, fileName); } } } catch (Exception e) { LOGGER.error("エラー発生"); throw new Exception("エラー発生", e); } finally { if (zis != null) { try { zis.close(); } catch (Exception e) { LOGGER.error("エラー発生"); throw new Exception("エラー発生", e); } } } } * 解凍処理 * @param zis 圧縮ストリーム * @param fileName 解凍対象ファイル名 */ private void extract(ZipInputStream zis, String fileName) throws Exception { // 出力用のストリームを宣言する。 BufferedOutputStream bos = null; try { // 解凍対象ファイルのフルパスを取得する。 Path filePath = Paths.get(this.currentTmpDir + Const.FILE_PATH_SEPARATOR + fileName); // 解凍対象ファイルを読み込む。 int readSize = 0; byte[] buffer = new byte[1024]; bos = new BufferedOutputStream( new FileOutputStream(filePath.toString()), 1024); // 解凍対象ファイルをファイルとして出力する。 while ((readSize = zis.read(buffer, 0, buffer.length)) != -1) { bos.write(buffer, 0, readSize); } bos.flush(); } finally { if (bos != null) { bos.close(); } zis.closeEntry(); } }