顯示具有 CMD 標籤的文章。 顯示所有文章
顯示具有 CMD 標籤的文章。 顯示所有文章

2018年4月22日 星期日

PowerShell 第一次使用需開啟功能

PowerShell 第一次使用需開啟功能

第一次使用需要開啟功能,使用 Win+X,然後按一下a
開啟 PowerShell 視窗,然後輸入
Set-ExecutionPolicy RemoteSigned
然後 輸入 Y 按下 enter 開啟 PowerShell 的功能

2018年4月11日 星期三

PowerShell 批次處理 刪除google雲端硬碟副本下載後產生的副檔名

PowerShell 批次處理 刪除google雲端硬碟副本下載後產生的副檔名

雲端硬碟如果使用建立副本的方式下載就會產生的副本字樣,比如說
原始檔案為
ABC.jpg
產生副本之後
ABC.jpg.jpg 的副本
下載到windwos之後就不能看到預覽圖了也沒辦法直接播放,需要刪除多餘的副檔名

如何刪除副檔名

批次檔案:下載
沒有加殼,可自行查閱代碼,確認安全

使用方法

下載放到你要的資料夾,然後按右鍵用poweshell執行,即可。
資料夾可以不用同一層,預設會自動搜尋3層內的。
第一次使用需要開啟功能,使用 Win+X,然後按一下a
開啟powershell視窗,然後輸入
Set-ExecutionPolicy RemoteSigned
然後 輸入 Y 按下 enter 開啟powershell的功能

2017年7月20日 星期四

CMD 批次檔 環境變數 長度太長 無法新增

CMD 批次檔 環境變數太長超過 1024 怎麼辦

換個工具吧QuQ,這個真的很惱人。不過還好這個工具從Win7開始就有了不用太擔心支援性。
除非長度限制之外還有一個很討人厭的是,我一直找不到可查看使用者變數的方法,終於讓我找到了,這個指令可以查看使用者的環境變數!
你可以透過cmd 輸入 powershell 啟動,如果不想離開 cmd 就在命令前加上 powershell。比如新命令 Get-Command 則輸入 powershell Get-Command。然後有 " 前要加斜線。
powershell的批次檔結尾是.ps1

環境變數設置與查看

這兩個函式可以用來區別使用者變數與系統變數
你也可以簡化他們為”User”, “Machine”,稍後會看到。

查看環境變數

[environment]::GetEnvironmentVariable("PATH", "User")
[environment]::GetEnvironmentVariable("PATH", "Machine")
還有一個比較簡單的方法
$env:path

設置環境變數

警告,記得先儲存自己的環境變數!儲存方法如下,幫你存到桌面。
cd ~;[environment]::GetEnvironmentVariable("PATH", "User") > Desktop/PATH_User.txt
cd ~;[environment]::GetEnvironmentVariable("PATH", "Machine") > Desktop/PATH_Machine.txt
設置環境變數
[System.Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";C:bin", "User")
[System.Environment]::SetEnvironmentVariable("PATH", $Env:Path + ";C:bin", "Machine")
這個黑科技可以擺脫2048限制了,不過環境變數還是有總長度限制,能省則省。
還有一點就是,他終於有防呆了!不會新增重複的,自動避免新增一樣的環境變數。


cmd批次檔寫法如下

@Echo Off
Title AddPath - By:Charlotte.HonG
:: Date :2016/05/28
:: Final :2017/07/20

::===========================================================
::確認是否為管理員權限
call :IsAdmin
set appPATH=%~dp0bin
powershell [System.Environment]::SetEnvironmentVariable(\"PATH\", $Env:Path + \";%appPATH%;\", \"Machine\")
::===========================================================
Exit

:IsAdmin
@Echo Off
Reg.exe query "HKU\S-1-5-19\Environment"
If Not %ERRORLEVEL% EQU 0 (
  Cls
  Echo [權限不足] 需使用管理員權限開啟
  Pause & Exit
)
goto:eof


參考

使用 cmd or powershell 列出當前目錄檔案或特定副檔名

使用 cmd or powershell 列出當前目錄檔案或特定副檔名

這裡提供cmd與powershell兩個方法,另外如果要在cmd下執行powershell命令在最前方加入powershell指令即可。
須注意日文檔名的儲存的txt檔案,程序要讀檔會比較麻煩,能不用就不要用比較好。

CMD

列出當前檔案
dir "*.lib"
輸出到文件
dir "*.lib" /b /on > "Lib_Lists.txt"
日文檔名使用 cmd /u /c dir /b /on >list.txt
移動文件
MOVE %FILENAME% %LISTPATH%

批次檔

獲得 指定目錄 lib資料夾內的所有 .lib 檔案清單,並儲存到 批次檔所在目錄
::@Echo Off
Title CreatList - By:Charlotte.HonG

set FILENAME="Lib_Lists.txt"
set FILEPATH="lib"
set LISTPATH=%~dp0

cd %FILEPATH%
dir *.lib /b /on > %FILENAME%
MOVE %FILENAME% %LISTPATH%


powershell

$file=Get-ChildItem -Recurse -include "*.lib"
set-content $file.name -path Lib_List.txt
日文檔名則在第二行結尾增加 -Encoding Unicode

2017年6月4日 星期日

批次檔 bat 如何輸出當前目錄檔案名稱到文件.txt 內

CMD 讀取指定

檔案名稱與打印

使用 dir
dir /b /on >list.txt
再來是讀取檔案使用for迴圈一行一行讀出來
@echo off
for /f "tokens=*" %%i in (list.txt) do ( 
    echo %%i 
)
其中 “tokens=*” 是關鍵如果讀取的文字檔中有空白,不加會讀不到
詳細可以參考:Re: [問題] bat檔判斷ini內容

日文處理

如果有日文會亂碼,加一些指令使用UTF-8存檔
cmd /u /c dir /b /on >list_UTF8.txt
這樣輸出是正常的,不過日文字體用內建的記事本開啟可能會有問題,需要其他支援的軟件來開啟。(如 SublimeText);
最悲劇的是…使用UTF-8存檔會導致bat無法讀取,貌似沒救了找不到什麼解。



powershell

後來又花了幾小時改用 powershell 這個真的有點神
附檔名是 ps1 預設打開會是記事本,在CMD輸入指令改由直接啟動
ftype Microsoft.Powershellscript.1="%SystemRoot%\system32\windowspowershell\v1.0\powershell.exe" "%1"
新版的win10初始設定會限制是不能執行腳本的,需要打開權限在 powshell 輸入
Set-ExecutionPolicy RemoteSigned
回答是就可以正常執行了

先創一個讀檔的

Function Read_File($ex_name){
    $file=Get-ChildItem -Recurse -ErrorAction SilentlyContinue -Filter *$ex_name | 
    Where-Object { $_.Extension -eq $ex_name }
    return $file
}
然後直接使用
$file=Read_File '.jpg'
印出就直接打就好了
$file
印出來會一團東西加個
$file.Name           # 保留檔名
$file.BaseName   # 去除附檔名
他會特麼很神的直接變成陣列
$file.Name          # 印出全部
$file.Name [0]     # 印出第一個
$file.Name [-1]   # 印出最後一個
怎麼這麼神奇,果斷放棄bat QuQ
接下來for迴圈可以上場了,一個一個處理
# 複製至資料夾內
ForEach($item in $file){
    mkdir $item.BaseName -ErrorAction SilentlyContinue
    Copy-Item $item.Name $item.BaseName
    # Remove-Item $item.Name
}
$item就是當前檔案名稱了,他會挨個輪過一次,這裡我是要把它放入資夾內。
比如說有個檔案是 123.jpg 我要放到 123/123.jpg 內。


其他參數

回頭來說一下剛剛一團函式
Get-ChildItem
印出當前目錄檔案
Recurse
這個貌似是讀子目路
-ErrorAction
略過警告比如說移動檔案時問你要不要覆蓋,SilentlyContinue是他的附帶參數(安靜的繼續)
-Filter *$ex_name
第一階段過濾出擴展名(副檔名),不過能力有限,假設過濾圖檔.jpg.jpg這樣會一起進來
Where-Object { $_.Extension -eq $ex_name }
補足上一個問題 $_ 指的是當前的緩存物件,這裡有指名(給名字)是$file


輸出到文本

兩行就可以解決了,如果要寫成一行中間加個分號隔開即可,後面選定Unicode才可以支持中文、日文、韓文等等會出狀況的文字。
$file=Get-ChildItem
set-content $file -path list.txt -Encoding Unicode
如果是要在CMD環境下使用可以使用(不過前提是系統支援)
powershell $file=Get-ChildItem; set-content $file -path list.txt -Encoding Unicode
如果想換個位置的話,比如說我目前在使用者目錄,但工作目錄不想cd切過去桌面(這裡輸入的目錄也可以改成絕位置)
$file=Get-ChildItem -path Desktop
set-content $file -path Desktop/list.txt -Encoding Unicode


查找函式

要查找函式可以透過這樣的方式知道有哪些方法可以用
Get-ChildItem $FilenNme | format-list *
另外獲取目錄後來發現一個比較簡單的用法
$file=Get-ChildItem -Recurse -include "*.jpg"

2017年2月21日 星期二

如何讓 Windows10 8 預設為英文輸入法 [或CMD預設為英文]

如何讓 Windows10 8 預設為英文輸入法 [或CMD預設為英文]


這其實是預設輸入法的問題而已Win10預設是中文輸入法其實很不方便
更改兩項設定即可讓系統預設都是英文輸入法了。

讓新注音輸入法 - 預設為英文

對著你右下角的輸入法(英或中的圖示)按右鍵
選擇 內容 將預設輸入模式改為英數模式
但這僅可以保證重新開機時一開始是英文輸入法而已,無法避免在別人的程序切為中文後切回來之後也變成中文了。
想像一個場景你現在開著終端機用英文輸入指令,突然想不起某個指令怎麼用,於是打開chrome切到中文輸入法打中文搜尋,這時候你切回來終端機的時候就變回英文了。
要解決這個問題就是要把輸入法分開,不要讓他用單一個狀態表示全部程序。

分開輸入法

Win10 改版之後設定變了這邊保留舊版與新板說明

Win10 1803

搜索地區及語言
然後進入進階鍵盤設定
打勾使用不同輸入法

Win10 1803 以前(不包含)

搜索地區及語言
開啟後進入
變更輸入法
進階設定
讓我為每個應用程式設定不同輸入法


完結

接下來開啟任何程式都可以保證是英文輸入法了

2016年10月8日 星期六

如何利用 [CMD 批次檔 .bat] 設定環境變數 永久與暫時

如何利用 [CMD 批次檔 .bat] 設定環境變數 永久與暫時

這裡將會實際做一個自動安裝JAVA的批次檔(CMD.bat)
並讓他自動設定系統環境變數或使用者環境變數,的批次檔當範例
批次檔需要放置JAVA目錄底下執行

設定暫時變數

@echo off
Title JAVA_PATH By Charlotte.HonG& Color 1A

set str=%PATH%;%~dp0jdk1.8.0_101\bin;
set PATH = "%str%"

exit
其實就是對PATH修改而已,不用擔心改壞了重啟CMD就好

設定永久變數

新增至環境變數
@echo off
Title JAVA_PATH By Charlotte.HonG& Color 1A

set str=%PATH%;%~dp0jdk1.8.0_101\bin;
setx /m PATH "%str%"

exit
新增至自定義變數
@echo off
Title JAVA_PATH By Charlotte.HonG& Color 1A

set str=%~dp0jdk1.8.0_101
setx /m JAVA_HOME "%str%"

exit
這裡的 %PATH% 是指舊有的環境變數
可不要把舊有的變數給刪除了
這裡的 /m 是指系統
如果沒有加會新增到使用者那邊去

小技巧

批次檔或軟體開啟時會載入系統變數
所以更改後如果軟體在這之前就開啟了
軟體必須重啟才能套用

範例

利用一個批次檔安裝 Java 並在安裝完畢執行一個
需要使用 Java 變數的軟體,比如說 Android Studio

分析給你看會出什麼意外

開啟bat時環境並沒有java的變數
利用批次檔安裝 Java 並新增永久變數
此時該批次檔還是沒有 Java 的變數必須等到重啟才有
於是你用他開啟 Android Studio 繼承該bat的環境變數
啟動失敗
-
解決辦法就是暫時變數與永久變數一起修改

行查看環境變數

想要一行一行查看環境變數可以使用
ECHO.%PATH:;= & ECHO.%


問題

批次檔1024長度限制

環境變數超出1024字元會出問題,因為批次檔的關係最長支援到2048,實際上手動到系統內設置是可以超過1024的。
解決方案用 Powershell
cmd我也找不到什麼好方法,我們還是使用現代工具來解決;這個其實從Win7就開始有了,不用太擔心支援度的問題,只是幾乎沒怎麼被廣泛利用。到了Win10 1704版微軟才強制推行。
使用方法可以搜索PowerSehll開啟執行,或直接在CMD中輸入也可以。
詳情請看站內連結:https://charlottehong.blogspot.tw/2017/07/cmd-2048.html