顯示具有 Windows Command 標籤的文章。 顯示所有文章
顯示具有 Windows Command 標籤的文章。 顯示所有文章

2012/8/2

【Windows】用命令建立捷徑

在Windows中沒有命令可以直接產生捷徑,但可以透過VBScript協助完成,直接參考批次檔範例:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
@ECHO OFF

SET TARGET="%USERPROFILE%\Desktop\Test.lnk"
SET SOURCE="C:\Users\Public\Test.bat"
SET ICON="C:\Users\Public\Test.ico"
SET DESC="Demo how to create shortcut on desktop"
SET HOTKEY="ALT+F"
REM ====== Window Style ======
SET WINDOW_NOR=1
SET WINDOW_MAX=3
SET WINDOW_MIN=7
SET WINDOW_STYLE=%WINDOW_MAX%
REM ==========================

SET SCRIPT="%TEMP%\%RANDOM%.vbs"

ECHO SET oWS = WSCript.CreateObject("WSCript.Shell") >> %SCRIPT%
ECHO sLinkFile = %TARGET% >> %SCRIPT%
ECHO Set oLink = oWS.CreateShortcut(sLinkFile) >> %SCRIPT%
ECHO oLink.TargetPath = %SOURCE% >> %SCRIPT%
ECHO oLink.IconLocation = %ICON% >> %SCRIPT%
ECHO oLink.WindowStyle = %WINDOW_STYLE% >> %SCRIPT%
ECHO oLink.Description = %DESC% >> %SCRIPT%
ECHO oLink.HotKey = %HOTKEY% >> %SCRIPT%
ECHO oLink.Arguments = "" >> %SCRIPT%
ECHO oLink.Save >> %SCRIPT%

CSCRIPT /NoLogo %SCRIPT%
DEL %SCRIPT%

程序概念基本上就是透過ECHO與重導向(Redirection)機制動態產生一個建立捷徑的VBScript並帶起執行產生捷徑,最後再把這個臨時的VBScript刪除。

或是可以直接寫一個VBScript,然後接受參數直接設定,VBScript參考如下(mkshortcut.vbs):
1
2
3
4
5
set WshShell = WScript.CreateObject("WScript.Shell" )
set oShellLink = WshShell.CreateShortcut(Wscript.Arguments.Named("shortcut") & ".lnk")
oShellLink.TargetPath = Wscript.Arguments.Named("target")
oShellLink.WindowStyle = 1
oShellLink.Save

執行
1
Mkshortcut.vbs /Target:"D:\Test.bat" /Shortcut:"Test"
即會在當前目錄下產生一個Test.lnk捷徑指向D:\Test.bat了。

2012/7/28

【Windows】SET指令的兩個妙用

Windows Command SET是很好用的一個指令, 變數的指定就要靠這支工具!
但他還有兩個我覺得挺實用的功能:
  1. 做數學運算(使用/A參數)
    基本上你想得到的數學運算大概都包了,請參考底下範例:
    1
    2
    3
    4
    5
    6
    7
    @ECHO OFF
    CLS
    
    SET /A A = (50 + 25) / 3 - 20
    ECHO (50 + 25) / 3 - 20 = %A%
    
    PAUSE
  2. 把檔案內容存到環境變數
    常常會有需求要把某檔案的內容經過程式做處理, 但處理的程式只接受參數而不會直接去開檔讀取文件內容做處理, 這時就可以使用SET /P這功能來達成需求,先看看這指令的最初用意:
    在Windows Command中可以透過SET設定環境變數,但有時候情境是需要跟使用者互動的,假設程式會先跟使用者打招呼並問使用者名字,等使用者回答後會依使用者回答的名稱做互動,參考如下範例:
    1
    2
    3
    4
    5
    6
    7
    @ECHO OFF
    CLS
    
    SET /P NAME=Hi Sir, what's your name? 
    ECHO Hello %NAME%, Welcome!
    
    PAUSE
    

    知道SET /P的用法後,此時再運用重導向(Redirect)概念就可以把檔案內的內容指定給變數了,參考如下範例:
    1
    2
    3
    4
    5
    6
    7
    @ECHO OFF
    CLS
    
    SET /P CONTENT=<A.txt
    ECHO %CONTENT%
    
    PAUSE