2022年8月19日 星期五

Json2Csv(JavaScript Object Notation轉換成CSV格式)

 作法1:( react-gh-pages離線套件)
將JSON格式轉換成CSV純文字讀取格式工具
步驟1:下載解壓縮 react-gh-pages
步驟2:開啟json-gh-pages資料夾下之 index.html
步驟3:將JSON格式貼於上方視窗,即可轉換成 CSV純文字格式 (預設20筆,點選Download the entire CSV)



作法2:(搭配Notepad++ 外掛工具)
經由Notepad++外掛方式(Plug-in)


作法3:(Python程式)

#'開啟檔案總管 (開啟轉換後之檔案使用)'

import subprocess

import os

import pandas as pd

#'開啟GUI 取得來源檔(準備捉取JSON之來源檔案路徑)

import tkinter as tk

from tkinter import filedialog

root = tk.Tk()


file_path = filedialog.askopenfilename(initialdir = "/",title = "Select file for JSON to csv(選擇欲處理之JSON檔案)",filetypes = (("Json files","*.json"),("Text files","*.txt"),("all files","*.*")))

df = pd.read_json (open(file_path, "r", encoding="utf8"))

print(df)  # 顯示讀取出之DataFrame資訊

input ("Press any key to continue!")


df.to_csv (r'd:\json2csv\Convert_Json_File.csv', index = None)

#將剛產出之CSV文字檔,直接開啟顯示出來

subprocess.Popen('explorer "d:\json2csv\Convert_Json_File.csv"')

2022年2月6日 星期日

PowerShell Remove 內建套件移除

微軟Win11作業系統,內建自己不常用軟體(如:Teams)如何移除,俾提升電腦工作效能?

步驟1:執行cmder程式,
步驟1-1:按+ Create new console
步驟1-2:選1:{Shells}
步驟1-3:選6:{PowerShells(Admin)}

步驟2:找出多餘未使用之軟體關鍵字(如:teams)
PowerShell,找出Win11內建安裝Teams相關軟件
Get-AppxPackage -Name *teams*

步驟2:
移除 內建MicrosoftTeams
Get-AppxPackage -Name MicrosoftTeams | Remove-AppxPackage -ErrorAction stop


取消Win11內建多餘軟件參考資訊:
reduce+Windows+11+RAM+usage+by+avoiding+its+new+features 

Windows 11  デフォルトで有効かつRAMを大量に消費するもの  

Sycnex Windows10Debloater script,移除微軟預設多餘內建軟體

 相關軟體:
Cmdler (PowerShell相關介接程式)

系統最佳化參考資訊


2022年1月13日 星期四

以PowerShell指令查詢Outlook之GAL全域通訊清單


步驟1:執行cmder程式,
步驟1-1:按+ Create new console
步驟1-2:選1:{Shells}
步驟1-3:選6:{PowerShells(Admin)}


步驟2: 將下列指令,逐行貼上 (註解: 

第3行  | where {$_ -match '@taipei.abc.com.tw'}  表示篩選ABC公司之台北分支辦公室 、

           | Sort-Object -Property department  以部門別排序後再產出結果  )

 

$OUTLOOK = New-Object -ComObject "Outlook.application"

$Galist=$outlook.getnamespace("MAPI").AddressLists.Item("全域通訊清單").AddressEntries

$Galist|%{$_.GetExchangeUser() |select companyname,department,Name,PrimarySmtpAddress,BusinessTelephoneNumber,JobTitle} | where {$_ -match '@taipei.abc.com.tw'}  | Sort-Object -Property department > c:\users\username\Gal_Taipei.txt


步驟3:檢視C槽資料夾,產出結果 c:\users\username\Gal_Taipei.txt


相關介面:
cmder命令提示字元(PowerShell)


相關GAL查詢
EXCEL VBA執行GAL查詢



2022年1月12日 星期三

正規表示式Regular Expression ( FQDN filter)

 將純文字格式下,篩選出FQDN (Domain Name名稱)

TEXTのうちドメイン名までを正規表現を用いて抽出する(FQDN)
 Regular expression which will match a valid domain name

 

背景說明:

公司因業務需要,原始來源為PDF格式,需將其內文中之FQDN網域位址,提取出來。可先經由pdftotext將PDF檔,轉換成TEXT格式後,再經由grep指令將FQDN抽出。


下列為BATCH批次檔

 
rem  將PDF檔先轉換成暫存純文字檔案
pdftotext %1 txtTempPDF.txt

rem 將PDF轉換完成為TEXT文字檔後,經由grep工具取出FQDN網域相關資訊
grep -E '[a-zA-Z0-9.\-_]{1,63}\.[a-zA-Z0-9.\-_]{1,63}' txtTempPDF.txt  -o > Tipip_FQDN.txt

rem 開啟經由grep篩選出之FQDN資訊
explorer Tipip_FQDN.txt

 

相關篩選IP參考資訊:

 (OpenSource)Pdftotext  ,PDF文字轉換工具

https://myblog-johnnyit.blogspot.com/2021/09/pdfip.html

 

2021年9月27日 星期一

PDF檔轉換成純文字檔,並抽取出IP資訊

Regular expression IPv4 addresses cover the range 0.0.0.0 to 255.255.255.255
IPv4 アドレスにマッチする正規表現

步驟一:

備妥PDF轉換成TEXT環境套裝程式

依作業系統環境,選擇下載套裝程式
https://miktex.org/download

步驟二:
安裝執行basic-miktex
備妥PDF轉換純文字程式,PDFTOTEXT

步驟三:
下列為BATCH批次檔
rem  將PDF檔先轉換成暫存純文字檔案
pdftotext %1 txtTempPDF.txt

rem 將PDF轉換完成為TEXT文字檔後,經由grep工具取出IP資訊
grep -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' txtTempPDF.txt  -o > Tipip.txt

rem 開啟經由grep篩選出之IP資訊
explorer Tipip.txt



參考資訊:
grep 過濾篩選指令

Windows環境,直接執行UnixLike指令

Utility programs (e.g. "grep") in the cygwin bash environment 相關執行檔案


2020年9月16日 星期三

auto-py-to-exe 轉換PY程式成為EXE

Step1:

安裝執行auto-py-to-exe圖形GUI界面之PYTHON轉換EXE套件程式

Step2:

將前個PYTHON程式( PYTHON旋轉PDF之程式載入),即可產出EXE執行檔


參考資訊:

auto-py-to-exe PYTHON轉換成EXE執行檔套件


PYTHON提供旋轉rorate PDF

下面為PYTHON自訂旋轉PDF (將下列紅色部分,貼在Notepad記事本,另存成RoratePDF.py)

 # importing the required modules彙入相關必要之模組 

import PyPDF2 

import sys

#'開啟檔案總管 (開啟轉換後之檔案使用)'

import subprocess

#'開啟GUI 取得來源檔(找出欲旋轉之PDF檔案)

import tkinter as tk

from tkinter import filedialog


root = tk.Tk()

root.withdraw()


FilePathName = filedialog.askopenfilename(initialdir = "/",title = "Select file for rotate (選擇欲旋轉之PDF檔案)",filetypes = (("PDF files","*.pdf"),("all files","*.*")))


  

def PDFrotate(origFileName, newFileName, rotation): 

  

    # creating a pdf File object of original pdf 

    pdfFileObj = open(origFileName, 'rb') 

      

    # creating a pdf Reader object 

    pdfReader = PyPDF2.PdfFileReader(pdfFileObj) 

  

    # creating a pdf writer object for new pdf 

    pdfWriter = PyPDF2.PdfFileWriter() 

      

    # rotating each page 

    for page in range(pdfReader.numPages): 

  

        # creating rotated page object 

        pageObj = pdfReader.getPage(page) 

        pageObj.rotateClockwise(rotation) 

  

        # adding rotated page object to pdf writer 

        pdfWriter.addPage(pageObj) 

  

    # new pdf file object 

    newFile = open(newFileName, 'wb') 

      

    # writing rotated pages to new file 

    pdfWriter.write(newFile) 

  

    # closing the original pdf file object 

    pdfFileObj.close() 

      

    # closing the new pdf file object 

    newFile.close() 

      

  

def main(): 

  

    # original pdf file name 

    origFileName = FilePathName

     

    # new pdf file name 

    newFileName = 'rotated_example.pdf'

      

    # rotation angle 自訂旋轉角度

    rotation_data = int(input("Enter a rotation angle(90、180): "))

      

    # calling the PDFrotate function 

    PDFrotate(origFileName, newFileName, rotation_data) 

      

if __name__ == "__main__": 

    # calling the main function 

    main()